Javascript对象原型参考
据我所知,以下第二种情况应该是真实的,但实际上是错误的。 那为什么不是这样?
情况1
var P = function(){}; P.prototype.get = function(){}; var p = new P,q = new P; console.log(q.__proto__ === p.__proto__) //true
案例2
var PP = function(){ var P = function(){}; P.prototype.get = function(){}; return new P; }; var p = PP(), q = PP(); console.log(q.__proto__ === p.__proto__) //false
在第一种情况下, P
和get()
是预定义的全局variables。 第二,它们是定义PP的函数的局部,因此,每个实例都有不同的参考。
在第一个,你有一个new P
在第二个,你有new P
在function,然后采取new
的function。
这可能会把它搞砸。
没关系,这是因为全球变数,就像他说的那样。
当你调用PP
函数时,每次调用P
时都会创build一个新的函数对象。 这些function中的每一个都有不同的原型。
在第一种情况下var p = new P,q = new P;
都实例化全球P
和它的原型,所以它返回true。
在第二种情况下, q
和p
都是使用new PP
实例化的不同的对象,它使用return new P
从PP
函数内部返回不同的P
所以它返回false。
- node.js模块导出
- Array.prototype.each = function(callback){for(var i = 0; i <this.length; i ++)callback(this ); } – 这个可以吗?
- JavaScript中的JavaScript原型对象效率
- Javascript:如何获取对象的原型链构造函数名称的列表?
- 在Javascript中,为什么Object.getPrototypeOf()返回一个空列表?
- Array.prototype.each = function(callback){for(var i = 0; i <this.length; i ++)callback(this ); } – 这个可以吗?
- Javascriptinheritance使用节点
- 如何在node.js中使用原型
- 怎么过程.__ proto__!== process.constructor.prototype?
- 在javascript中使用更高阶函数的原型函数
- 为什么NodeJS util.inherits函数中的“super_”属性添加到构造函数中?