gpt4 book ai didi

javascript - 为什么将构造函数直接放入变量中?

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

我试图设置一个变量并传递它的构造函数,本质上就像 C# 中的匿名类型,但 javascript 似乎不喜欢它......

var aPerson = function Person(){

};


$(document).ready(function(){

Person.prototype.age = 22;

window.alert(aPerson .age);

});

为什么我不能这样做?

最佳答案

Person 仅声明为 aPerson 变量的一部分,但需要显式定义(例如 function Person(){} ),然后才能用于原型(prototype)继承。你需要更多类似这样的东西:

// Create a Person function object
function Person() {

};

// Modify that function's prototype
Person.prototype.age = 22;

$(document).ready(function() {
// aPerson.__proto__ = Person.prototype
var aPerson = new Person();

// JS checks whether aPerson has age already set, if not, it checks
// aPerson's prototype -- in which case it's given the value 22
alert(aPerson.age);
});

事情是这样的:通过将 prototype 引用复制到对象,属性 prototypenew 一起工作(您可以看到这意味着什么)例如,在 Chrome 控制台中运行 console.dir(aPerson))。 JavaScript 首先检查原始对象本身,然后检查原型(prototype)以查看函数或属性是否存在。这意味着您可以稍后更改引用原型(prototype) age 并查看原始对象中反射(reflect)的更改。此外,您可以在原始对象本身中声明您自己的age,并使其覆盖原型(prototype)。

关于javascript - 为什么将构造函数直接放入变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6359324/

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