0
var google = {  
    makeBeer : function(arg1,arg2){     
         alert([this instanceof google, arg1, arg2]);        
    }    
}

google.makeBeer('water','soda');

当我检查时,上面没有提醒this instanceof google,但是当我这样做时,相同的代码有效。

var google = {  
    makeBeer : function(arg1,arg2){     
         alert([this instanceof Object, arg1, arg2]);        
    }    
}

google.makeBeer('water','soda');

引用“this”是 Object 的实例,为什么不是Google Object. 在我的情况下,我如何确保该实例属于该特定对象。

更新到同一个问题:

var newWay = {}
google.makeBeer.call(newWay, 'pepsi', 'coke');

在上述情况下,我将 newWay 对象传递给我的函数 makeBeer,我怎么知道它的 newWay 对象在这里。

4

2 回答 2

1

变量“google”所指的对象实际上只是一个普通对象。标识符“google”只是一个变量名。运算符告诉对象来自哪里,而instanceof不是碰巧引用它的变量。

于 2013-03-13T15:22:15.033 回答
1

来自instanceof 上的 MDN 条目

instanceof 运算符测试对象的原型链中是否具有构造函数的原型属性。

因此,除非您使用唯一的构造函数创建对象,否则类似于:

var newWay = new Way(); // assuming you have defined an object Way

where newWay instanceof Way === true,除了它是一个对象之外,您不能使用 instanceof 告诉您任何其他信息。

于 2013-03-13T15:27:55.593 回答