Javascript的新实例
嗨,我对Javascript还是相当陌生的。我对这个新词以及它在决定instanceof操作符输出中的作用有点困惑 案例1。返回对象文字Javascript的新实例,javascript,new-operator,instanceof,Javascript,New Operator,Instanceof,嗨,我对Javascript还是相当陌生的。我对这个新词以及它在决定instanceof操作符输出中的作用有点困惑 案例1。返回对象文字 var Dog=function(){ return{legs:4,bark:alert("BOW!!")};}; var luna=Dog(); luna instanceof Dog;//why false here false var luna=new Dog(); luna instanceof Dog;//why false here fal
var Dog=function(){
return{legs:4,bark:alert("BOW!!")};};
var luna=Dog();
luna instanceof Dog;//why false here
false
var luna=new Dog();
luna instanceof Dog;//why false here
false
案例2:现在,我什么也不做,而不是返回object literal,
var Dog=function(){
};
var luna=Dog();
luna instanceof Dog
false
var luna=new Dog();
luna instanceof Dog;//why true here
true
因为你:
运算符
new
操作符创建的对象
因为你:
运算符
new
操作符创建的对象
因为你:
案例1:
var Dog=function(){
return{legs:4,bark:alert("BOW!!")};};
var luna=Dog();
luna instanceof Dog;
false
var Dog=function(){
};
var luna=Dog();
这里没有实例化任何东西,它只是一个返回值的函数:一个普通对象。这大致相当于:
var Dog=function(){
return new Object();
}
返回值的构造函数是Object:luna。构造函数是Object()
函数
var luna=Dog();
luna instanceof Dog;
false
var luna=new Dog();
luna instanceof Dog;
false
不能实例化返回某些内容的函数
案例2:
var Dog=function(){
return{legs:4,bark:alert("BOW!!")};};
var luna=Dog();
luna instanceof Dog;
false
var Dog=function(){
};
var luna=Dog();
它被称为一个函数,一个不返回任何内容的函数,实际上它返回未定义的
luna instanceof Dog
false
因为undefined
不是任何东西的实例
var luna=new Dog();
创建一个新的对象
将Dog作为构造函数luna。构造函数
是Dog()
新操作符用于指定函数应该做什么:没有它,它返回一些东西(或未定义的),用它从构造函数实例化一个新对象(这里Dog
)案例1:
var Dog=function(){
return{legs:4,bark:alert("BOW!!")};};
var luna=Dog();
luna instanceof Dog;
false
var Dog=function(){
};
var luna=Dog();
这里没有实例化任何东西,它只是一个返回值的函数:一个普通对象。这大致相当于:
var Dog=function(){
return new Object();
}
返回值的构造函数是Object:luna。构造函数是Object()
函数
var luna=Dog();
luna instanceof Dog;
false
var luna=new Dog();
luna instanceof Dog;
false
不能实例化返回某些内容的函数
案例2:
var Dog=function(){
return{legs:4,bark:alert("BOW!!")};};
var luna=Dog();
luna instanceof Dog;
false
var Dog=function(){
};
var luna=Dog();
它被称为一个函数,一个不返回任何内容的函数,实际上它返回未定义的
luna instanceof Dog
false
因为undefined
不是任何东西的实例
var luna=new Dog();
创建一个新的对象
将Dog作为构造函数luna。构造函数
是Dog()
新操作符用于指定函数应该执行的操作:如果没有它,它将返回一些内容(或未定义的),并从构造函数实例化一个新对象(此处Dog
)使用函数关键字来创建类可能会令人困惑。当您调用Dog()
而不使用new
关键字时,您所做的只是调用一个函数;课程不包括在内
在案例1中,第一个luna
只是Dog
作为普通函数调用时的结果:{legs:4,bark:alert(“BOW!!”)}
,与Dog
作为一个类无关。第二个luna
也是如此。由于Dog
返回一个对象,它将覆盖通常使用new
创建的“类”实例
在案例2中,第一个luna
就像案例1中的第一个luna
一样,是一个普通对象。但是第二个luna
是Dog
的一个实例,因为使用了new
关键字,这意味着Dog
被视为一个类而不是一个函数,并且Dog
不会返回任何内容
(另外,您应该将对象更改为{legs:4,bark:function(){alert(“BOW!!”;}}}
)使用function
关键字创建类可能会令人困惑。当您调用Dog()
而不使用new
关键字时,您所做的只是调用一个函数;课程不包括在内
在案例1中,第一个luna
只是Dog
作为普通函数调用时的结果:{legs:4,bark:alert(“BOW!!”)}
,与Dog
作为一个类无关。第二个luna
也是如此。由于Dog
返回一个对象,它将覆盖通常使用new
创建的“类”实例
在案例2中,第一个luna
就像案例1中的第一个luna
一样,是一个普通对象。但是第二个luna
是Dog
的一个实例,因为使用了new
关键字,这意味着Dog
被视为一个类而不是一个函数,并且Dog
不会返回任何内容
(另外,您应该将对象更改为{legs:4,bark:function(){alert(“BOW!!”);}}
)非常准确的解释:非常准确的解释:也许您可以包括新操作符和原型之间的关联(这就是instanceof使用的)。@Quentin那么幕后是这样吗??var Dog=function(){var obj=Object.create(Dog.prototype);返回obj;};也许你可以把新操作符和原型(instanceof使用的就是原型)之间的关联包括在内。@Quentin那么幕后是这样的吗??var Dog=function(){var obj=Object.create(Dog.prototype);返回obj;};是的,我想知道为什么地狱警报一直在执行。很好!。是的,我想知道为什么地狱警报一直在执行。很好!。