我手写了一个Stack的函数,然后使用new操作符创建了对象stk:
var Stack=function(){
const stack=[];
return{
set: function(val){
stack.push(val);
},
get:function(){
return stack.pop();
}
}
}
var stk=new Stack()
stk instanceof Stack // false
但是当我在测试stk instanceof Stack
时却发现结果返回false
?new不是会将stk绑到Stack构造函数的原型链上吗?
于是我做了一个简单版的测试:
var A=function(){}
var a=new A()
a instanceof A // true
得到了让我迷惑的结果,还请各位大佬帮我解答一下
你好,js中的new可以这样理解的:
你的stack相关代码属于第二种情况。
补充说明一点,如果函数返回的不是一个对象,比如是一个字符串,那么这个返回会被忽略, a 仍然是A的一个实例,比如: