gpt4 book ai didi

javascript - 为什么这些对象有不同的构造函数?

转载 作者:行者123 更新时间:2023-11-28 20:09:48 25 4
gpt4 key购买 nike

我是 JavaScript 新手,正在尝试创建对象。情况 2 工作正常,但情况 1 没有显示我期望的输出。

问题:为什么我可以在情况 2 中查看构造函数,而在情况 1 中却不能?

案例1

function newemp() {
return {
'name':'bob',
'age':20
};
}
fred = newemp()
document.write(fred.constructor)

案例2

function employee(name,jobtitle,born) {
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}

var fred=new employee("Fred Flintstone","Caveman",1970);
document.write(fred.constructor);

输出案例1

function Object() { [native code] }

输出案例2

function employee(name, jobtitle, born) { this.name=name; this.jobtitle=jobtitle;` this.born=born; }

最佳答案

在第一种情况下,只是从函数 newemp 返回一个对象文字,您看到的是 Javascript 对象的默认构造函数。 JavaScript 中的每个对象都有一个内置的构造函数。您所看到的就是您执行此操作时将会看到的:

var ob = {};
console.log(ob.constructor);

在第二种情况下,您使用关键字创建一个 employee 类型的对象,并且构造函数指向 employee

由于构造函数不是只读的,因此您可以在函数中设置它。 (但我不确定为什么在您的特定场景中需要它)

function newemp() {
var ob = {
'name': 'bob',
'age': 20
};
ob.constructor = newemp; //Set the constructor
return ob;
}
fred = newemp();
console.log(fred.constructor);

Some reference

关于javascript - 为什么这些对象有不同的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20085963/

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