使用JS对象和函数

Ric*_*rdo 0 javascript function object

我是javascript的新手,我想知道为什么bob.age还是30,而age我打电话的时候是50.我已经设置age到50 setAge所分配50 this.age,这是我所知道的是一个参考bob.age,所以agebob.age应具有相同的价值.

在此输入图像描述

// here we define our method using "this", before we even introduce bob
var setAge = function (newAge) {
    this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
// and down here we just use the method we already made

// change bob's age to 50 here
bob.setAge = setAge(50);
Run Code Online (Sandbox Code Playgroud)

Cha*_*adF 7

你的代码/理解中有几个错误,我将首先解释为什么这是错误的,并解释它周围的概念

var bob = new Object() 使bob成为常规对象.

你的setAge函数接受一个参数.它设定this.age为该值.但是setAge放在全局范围内.因此this- > window.这就是为什么当您在age全球范围内输入50时.

Jaromanda是正确的,你需要将函数setAge放在对象bob上.

如果你正在玩弄this你可能会对伪古典实例化风格感兴趣:

var Person = function(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype.setAge = function(newAge) {
    this.age = newAge;
}

var bob = new Person ('Bob', 30);
bob.setAge(50);
bob.age; 
// 50
Run Code Online (Sandbox Code Playgroud)