码迷,mamicode.com
首页 > 编程语言 > 详细

javascript属性之get/set

时间:2017-06-24 21:02:40      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:turn   原型   java   logs   class   rabl   script   使用   实现   

var o  = {
get x(){
     return 7;
},
set x(val){
    console.info("不能设置x的值");
}
}

o.x    //7    读取x值的时候,会使用get方法

o.x = 9  //不能设置x的值      赋值x时,会使用set方法

get/set与原型链


 

 

//不包含get/set的原型

function p(){}

p.prototype.z = 9;

var p1 = new p();

p1.z  //9    //对象上没有属性,将在原型链上查找

p1.z = 10;    //原型上不包含get/set方法时,向原型上的同名属性赋值,会在对象上添加此属性

p1.z //10     //对象上能够找到属性,将不会在原型链上查找

 

//原型上包含get/set方法

function
person(){} Object.defineProperty(person.prototype,‘z‘,{get:function(){return 1}}); var p = new person(); p.z //1 p.z = 89; p.z //
still 1 原型链上get/set方法,操作此属性的时候,会向上查找原型链。 所以p.z仍旧是1
//那个问题来了,在原型链上有get/set方法的时候,怎么实现在对象上添加此属性呢?  

function foo(){}

Object.defineProperty(foo.prototype,‘z‘,{get:function(){return 1}})

var f = new foo();

f.z  //1

f.z = 2;

f.z   //still 1

Object.defineProperty(f,‘z‘,{value:100,configurable:true,writable:true});

f.hasOwnProperty(‘z‘)  //true

f.z  //100

f.z = 90;

f.z  //90

delete f.z  //true

f.hasOwnProperty(‘z‘)   //false

f.z   //1  回到原型链查找

 

javascript属性之get/set

标签:turn   原型   java   logs   class   rabl   script   使用   实现   

原文地址:http://www.cnblogs.com/dsitn/p/7074238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!