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对象呢。
答案 0 :(得分:1)
变量“google”引用的对象实际上只是一个普通对象。标识符“google”只是一个变量名称。 instanceof
运算符告诉对象来自何处,而不是引用它的变量。
答案 1 :(得分:1)
instanceof运算符测试对象在其原型链中是否具有构造函数的prototype属性。
因此,除非您使用唯一的构造函数创建对象,例如:
var newWay = new Way(); // assuming you have defined an object Way
其中newWay instanceof Way === true
,你不能使用instanceof告诉你除了它是一个对象以外的任何东西。