打算把使用Javascript的水平从child提升到小学毕业,近期会持续记录一些知识点。

javascript的引用机制:只要一个对象赋值为另一个对象,就建立了引用。一旦建立了引用,对象们就公用一块空间。可以看下面一段代码:

var  stooge={
nickname:"Maria"
}
var x = stooge;
console.log(stooge.nickname); //Maria x.nickname = 'Curly';
x.realname ="Thomas" console.log(stooge.realname);//Thomas 由x添加的realname属性。 var nick = stooge.nickname; console.log(nick); //显然是Curly console.log(stooge.nickname);//被覆盖为 Curly

javaScript里没有很强的class概念,也没有class和instance的区分。new关键字的用处和java类似,也是创建一个新的对象。但是js中的对象不是只有new才能创建,多种创建方式,例如function这种类型的对象,就可以通过显式声明,赋值给变量,或者调用Function构造函数来构建。

javascript的Prototype:每个对象都有一个prototype,并且从中继承属性。所有对象都继承Object.prototype的属性。创建新对象时可以选择某个对象作为prototype,这样就可以直接继承它的属性了。这里是新开辟一块儿内存空间,而不是引用。通过下面的代码,我们可以方便的让一个对象继承另一个对象的prototype

if(typeof Object.inherit !== 'function'){
Object.inherit = function(obj){
var fun = function(){};
fun.prototype = obj;
return new fun();
};
} var lucasliu={
job:"tester",
hobby:"reading"
} var a=Object.inherit(lucasliu); //“继承“,实际上是copy出了所有属性
console.log(a.job);// tester 继承自lucasliu
a.job = 'doctor';
console.log(a.job);//doctor 值被覆盖为doctor
console.log(lucasliu.job);//tester,lucasliu不受影响 lucasliu.newskill="play piano"; console.log(a.newskill); //play piano a跟着prototype获得了新技能。
 

prototype的属性可以被继承者的同名类型覆盖。通过delete关键字可以清除覆盖。

JavaScript的一些知识碎片(1)的更多相关文章

  1. JavaScript的一些知识碎片(2)-反射-全局变量-回调

    JavaScript中的反射:编程语言中的反射原理都一样,就是通过操作metadata(描述语言的语言)来完成一些不具备反射功能的语言很难实现的功能.在静态语言中,反射是一个高大上的东西,比如在运行时 ...

  2. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  3. 快速掌握JavaScript面试基础知识(三)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  4. 快速掌握JavaScript面试基础知识(二)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  5. JavaScript 面向对象开发知识基础总结

    JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...

  6. JavaScript的高级知识---词法分析

    JavaScript的高级知识---词法分析 词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 函数在运行的瞬间, ...

  7. javascript的基础知识及面向对象和原型属性

    自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...

  8. 发发关于JavaScript的感慨,随手记几个js知识碎片

    最近一段时间写了很多JavaScript和jquery代码,越来越感觉js基础不牢固,写一句查半天,有时间肯定要系统的学一下. 不说了,先记一下最近学到的点东西,省的以后没时间系统学js还要再来查. ...

  9. 【知识碎片】JavaScript篇

     40.选择器组合 逗号是多选择器空格 是子子孙孙尖括号 只找儿子 39.失去焦点事件blur $("input").blur(function(){ $("input& ...

随机推荐

  1. 关于input全选反选恶心的异常情况

    上一篇讲到:第一次点击全选按钮input显示对勾,第二次则不显示,需要用prop来添加checked属性. 但是用prop会出现一个问题,对勾显示,而checked属性不会被添加(比如:$(" ...

  2. 如何编译ReactNative示例程序Examples

    通过示例程序可以看到一些基本组件的使用,对于学习ReactNative是很有帮助的. 编译示例程序需要将整个项目导入到androidStudio中,androidStudio导入项目时选择react- ...

  3. mysqli,Fatal error

    <?php //mysql数据库类-mysqli版 //2014/6/13 class mysqlidb{ public $dbhost; public $dbuser; public $dbp ...

  4. 树莓派2 安装 win10Iot 和 Ubuntu mate

    注册博客账号已经2年多了.一直没写博文现在抽空写写. 写这篇博文是因为我之前在网上找了蛮多有关教程写的都不是很清晰.安装没成功.所以我写一下我根据网上找到的整理一下分享出来. 非专业只是业余玩玩.好了 ...

  5. linux挂载windows上的共享文件夹

    假定win机d:/folder/share的共享名为 share , 有用户administrator ,密码123 在linux机上,把share挂到/mnt目录:mount -t cifs -o ...

  6. 【分享】4412开发板ubuntu 12.0.4播放音乐没有声音解决方法

    转自迅为论坛:http://bbs.topeetboard.com 准备工作 1.下载 vim 在命令行上输入 apt-get install vim 下载 vim 2.输入 vim /etc/hos ...

  7. [转]android 获取视频帧

    本文转自:http://blog.csdn.net/heart_Moving/article/details/17414067 今天做Android视频文件解码,需求:从一个视频文件获取到一帧一帧的图 ...

  8. 【2016-10-14】【坚持学习】【Day5】【单例模式】

    今天学习第二个模式:单例模式.只允许系统有一个实例运行,提供全局访问该实例的公共方法. class Singleton { private static Singleton instance=null ...

  9. Appium学习实践(三)测试用例脚本以及测试报告输出

    之前Appium学习实践(二)Python简单脚本以及元素的属性设置中的脚本,会有一个问题,就是在每个测试用例完成之后都会执行tearDown,然后重新setUp,这样导致脚本的执行效率偏低,而且会有 ...

  10. 123——Appium Girls活动

    有感于Ruby Girls和Python Girls,在15年就想组织一次移动测试的妹子活动,框架选择Appium, 从15年夏天开始准备,申请Google的会议室,招募教练,开放报名,审核报名,到正 ...