[英]How to create a method in object literal notation?
我了解到有兩種類型的創建對象。 第一個:對象文字表示法,第二個:對象構造函數。 我了解到也有方法和函數,但我不明白如何用對象文字表示法創建方法? 在對象構造函數中,我只寫:
var bob = new Object();
bob.age = 30;
bob.setAge = function(newAge) {
bob.age = newAge;
};
你能告訴我在編寫對象文字符號時如何做同樣的事情嗎?
var bob = {
age: 30
};
從語法上講,更改非常簡單:
var bob = {
age: 30,
setAge: function (newAge) {
bob.age = newAge;
}
};
但是正如您所看到的,有一個問題:在您的代碼中,它使用外部bob
變量,因此如果您更改bob
變量的值,這將不起作用。
你可以用
var bob = {
age: 30,
setAge: function (newAge) {
this.age = newAge;
}
};
請注意,此時您應該檢查您需要的是否實際上不是class ,如果您有多個實例,這會帶來一些性能改進。
更新: ECMAScript 6 現在允許以相同的方式定義方法,無論它們是否在對象字面量中:
var bob = {
age: 30,
setAge (newAge) {
this.age = newAge;
}
};
它沒有什么不同,就像
var bob = {
age: 30,
setAge: function( newAge ) {
this.age = newAge;
}
};
或者,您可以通過調用Object.defineProperty()
或簡單地創建一個真正的setter函數
var bob = {
age: 30,
firstName: 'j',
lastName: 'Andy',
set setName( newName ) {
var spl = newName.split( /\s+/ );
this.firstName = spl[ 0 ];
this.lastName = spl[ 1 ];
}
}
你可以去哪里
bob.setName = "Thomas Cook"; // which sets firstName to "Thomas" and lastName to "Cook"
您發布的最后一個代碼缺少逗號。 此外,您不需要';' 在對象屬性的函數定義之后。 像這樣:
var object2 = {
name: "Fred",
age: 28,
club: "Fluminense",
bio2: function (){
console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
}
};
這是使用文字對象創建方法解決此練習的方法:
var setAge = function (newAge) {
this.age = newAge;
};
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;
var susan = {
age: 25,
setAge: setAge
}
susan.setAge(35);
如果要封裝,可以使用以下語法(自執行函數)。 這里的年齡不能從對象鮑勃的外部訪問。
var bob = (function() {
//...private
var age = 30;
function setAge(newAge) {
age = newAge;
};
function getAge() {
return age;
}
// Public api
return {
setAge: setAge,
getAge: getAge
}
}());
bob.setAge(50);
alert(bob.getAge());
jsfiddle: http : //jsfiddle.net/61o9k98h/1/
const bob = {
age: 30,
setAge(age) {
this.age = age;
},
};
alert(bob.age); // 30
bob.setAge(63); // set age = 63
alert(bob.age); // 63
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions
像這樣:
var bob = {
age: 30,
setAge: function (age) {
this.age = age;
}
}
alert(bob.age); // 30
bob.setAge(45); // set age = 45
alert(bob.age); // 45
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.