1. 程式人生 > >JavaScript對象訪問器屬性

JavaScript對象訪問器屬性

get name ret highlight type ron efi 有一個 訪問器屬性

  對象訪問器就是setter和getter,他們的作用就是

    1. 提供另外一種方法來獲取或者設置對象的屬性值,
    2. 並且在獲取和設置的時候,可以用一定的其他操作。

  看下面代碼:

<script>
	var person = {
		_name : "abc",   //註意此處的_name有一個下劃線
	};
	Object.defineProperty(person,"name",{ 
		//註意第二個參數的前面沒有下劃線,所以_name和name是兩個不同的屬性
		set : function(value){
			this._name = "new name " + value;   
			//註意這裏是給_name屬性賦值
		},
		get : function(){
			return "this is name get by function : " + this._name;  
			//註意這裏是返回字符串加上_name的值
		}
	});
	//到這裏,person於是就有了兩個屬性:_name和name屬性

	// 直接獲取_name屬性
	console.log(person._name);  //abc

	//通過name屬性來間接獲取_name的值,因為會執行name屬性的getter訪問器屬性(方法)
	console.log(person.name);   //this is name get by function : abc

	// 直接修改_name屬性
	person._name = "xyz";
	console.log(person._name);  //xyz

	//修改name屬性,但是name屬性的setter訪問器屬性(方法),會作用到_name屬性上
	person.name = "wtf"; 		//該字符串會在前面加上new name,然後在賦值給_name
	console.log(person._name);  //new name wtf
	console.log(person.name);	//this is name get by function : new name wtf
</script>

  

JavaScript對象訪問器屬性