gpt4 book ai didi

JavaScript 是对象还是函数

转载 作者:行者123 更新时间:2023-11-29 18:27:51 25 4
gpt4 key购买 nike

我有这个代码:

var obj = function (i) {
this.a = i;
this.init = function () {
var _this = this;
setTimeout(function () {
alert(_this.a + ' :: ' + typeof _this);
}, 0);
};
this.init();
};

obj('1');
obj('2');
obj('3');
new obj('4');​​​

http://jsfiddle.net/kbWJd/

脚本警告 '3::object' 三次,'4::object' 一次。

我知道这是为什么。这是因为 new obj('4') 使用它自己的内存空间创建一个新实例,并且之前的调用共享它们的内存空间。在 obj 的代码中,我如何确定我是一个新对象还是一个函数,因为 typeof _this 只是说“对象”?

谢谢。

最佳答案

这是您要找的吗?如果你执行一个没有new关键字的函数,函数内部的this等于包含的对象(在这种情况下是window)。

if( this === window ){
console.log('not an object instance');
} else {
console.log('object instance');
}

包含不同对象的示例:

var obj = {

method: function(){

if( this === obj ){
alert('function was not used to create an object instance');
} else {
alert('function was used to create an object instance');
}

}

};


obj.method(); // this === obj

new obj.method(); // this === newly created object instance

关于JavaScript 是对象还是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com