javascript中的new使用
2010-03-20 00:00
351 查看
所以javascript中没有类的概念。理解这一点很重要,很多javascript教程为了让读者更容易理解,会套用他们常用的类模式中的概念,这 样反而让大家产生歧义。
先进段代码,
这段代码,我们会经常用到,其中new关键字最容易引起混淆的一处。这里的new和.NET中的所做的工作不同。
我们可以这样理解javascript中用new操作创建实例的过程,new关键字以employee()为模板创建了一个新的对象,它复制了employee构造器中的成员变量(也可以理解为,将p对象作为参数传入构造函数中,并且应用函数中所有this的成员变量),同时继承了构造器的原型。
我们用代码模拟new的过程。
__proto__ 是 javascript对象实例一个内部属性,它指向构造函数即employee的prototype属性,当对象查找某一成员变量时,例如p.say,首先查找自己的成员属性,如果找到了,返回值,如果没找到,就去调用__proto__来检查原型链,当前例子,也就是在employee.prototype中找到say成员。
先进段代码,
function employee(){ this.name=""; this.dept=""; } employee.prototype={ say:'hello' } var p = new employee();
这段代码,我们会经常用到,其中new关键字最容易引起混淆的一处。这里的new和.NET中的所做的工作不同。
我们可以这样理解javascript中用new操作创建实例的过程,new关键字以employee()为模板创建了一个新的对象,它复制了employee构造器中的成员变量(也可以理解为,将p对象作为参数传入构造函数中,并且应用函数中所有this的成员变量),同时继承了构造器的原型。
我们用代码模拟new的过程。
//var p = new Object() is also correct. var p ={}; employee.apply(p); p.__proto__ = employee.prototype;
__proto__ 是 javascript对象实例一个内部属性,它指向构造函数即employee的prototype属性,当对象查找某一成员变量时,例如p.say,首先查找自己的成员属性,如果找到了,返回值,如果没找到,就去调用__proto__来检查原型链,当前例子,也就是在employee.prototype中找到say成员。
相关文章推荐
- JavaScript不使用prototype和new实现继承机制
- javascript 中的 new Date() 的使用总结
- JavaScript replace new RegExp使用介绍
- JavaScript中的new的使用方法与注意事项
- Javascript的实例化与继承:请停止使用new关键字
- JavaScript的实例化与继承:请停止使用new关键字(转自infoQ)
- javascript中使用new与不使用实例化对象的区别
- JavaScript中的new的使用方法与注意事项
- 《JavaScript设计模式与开发实践》——JavaScript中使用new关键字创建对象实例
- javascript中构造函数new使用的注意事项
- JavaScript中使用构造器创建对象无需new的情况说明
- JavaScript基础 使用new关键字和Array()来创建空数组 并 不按顺序来添加元素
- JavaScript中的new的使用方法与注意事项详解
- JavaScript中的new的使用方法与注意事项
- JavaScript中的new的使用方法与注意事项
- javascript构造函数强制使用new
- JavaScript基础 使用new关键字和Array()来创建空数组 并 不按顺序来添加元素
- javascript中使用new与不使用实例化对象的区别
- javaScript使用new关键字时发生了什么?