gpt4 book ai didi

javascript - 当 javascript 函数用作对象的基础时的变量 -

转载 作者:行者123 更新时间:2023-11-30 18:32:20 26 4
gpt4 key购买 nike

当 javascript 函数用作对象的基础时,使用“this.name”而不是“name”有什么好处 -

function cat(name) {    
this.name = name;
this.talk = function() {
alert( this.name + " says meeow!" )
alert( name + " says meeow!" )
}
}

cat1 = new cat("Sylvester")
cat1.talk()

最佳答案

使用 this.variable 而不是 variable 的意义在于,您可以在构造函数范围之外引用变量,而不会污染全局命名空间。

在您的示例中,构造函数中添加了 talk 函数。对于更面向对象的 JavaScript 方法,talk 函数通常定义在 Catprototype 上:

function Cat(name) {
this.name = name;
}
Cat.prototype = {
talk: function () {
alert(this.name + ' says meeow!');
}
};

请注意构造函数中未设置函数的原因是什么? talk 函数不会引用调用对象之外的 name

此外,在实例化 Cat 对象后,用户可以通过直接访问该属性来覆盖该值:

var a = new Cat('bob');
a.talk(); //'Bob says meeow!'
a.name = 'Joe';
a.talk(); //'Joe says meeow!'

如果您计划在不同的对象上下文中调用函数,使用 this 也很重要:

function foo(bar) {
this.baz = bar;
}

foo('fizz'); //sets window.baz === 'fizz'

var a = {};
foo.call(a, 'buzz'); //sets a.baz === 'buzz'

如果您希望值在构造函数调用后在外部可编辑,请务必在构造函数范围内声明函数以封装值并防止进一步修改。

关于javascript - 当 javascript 函数用作对象的基础时的变量 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287648/

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