簡體   English   中英

為什么不能在該對象文字中創建與全局函數相等的方法? (javascript)

[英]Why can't I create a method equal to a global function within this object literal? (javascript)

更新:謝謝@Mathletics-當我應該在對象文字符號內使用:時,我使用了= setAge: setAge在對象文字內部完美工作。

在Codecademy JavaScript軌道中,發生以下問題:

// 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;
bob.setAge = setAge;

// make susan here, and first give her an age of 25
//var susan = {age: 25, setAge = setAge}; //does not work
var susan = new Object();
susan.age = 25;
susan.setAge = setAge;

// here, update Susan's age to 35 using the method
susan.setAge(35);

我想將susan.setAge設置為全局函數setAge 當我嘗試使用對象文字符號執行此操作時,它不起作用,但是如果我使用new然后使用點符號,則它起作用了。

我也嘗試在對象文字符號內設置setAge = global.setAge ,但是失敗了。 setAge = this.setAgefunction setAge = setAgefunction setAge = this.setAgefunction setAge = global.setAge也都失敗了。

我嘗試研究有關Stack Overflow的相關問題,但這些問題並不十分相關。 這個問題雖然是一個類似的例子,但似乎是關於作者在對象內創建方法和使用.apply()調用全局方法之間的困惑,他或她似乎沒有意識到。

您的sintax是錯誤的:

var susan = {age: 25, setAge : setAge}; // : instead of =
susan.setAge(35);
console.log(susan.age) // will show 35

您還可以嘗試其他方法:

function Person(params){
    params=params || {};
    this.age=params.hasOwnProperty("age") ? params.age : null;

    this.setAge=function(age){
        this.age=age;
    }
}

var susan = new Person({age:25});
susan.setAge(35);
console.log(susan.age) // outputs 35

如前所述,使用參數可以節省幾行,因為它始終是一個對象:

function Person(){
    this.age=arguments.hasOwnProperty("age") ? arguments["age"] : null;
    this.setAge=function(age){
        this.age=age;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM