zoukankan      html  css  js  c++  java
  • javascript数据属性和访问器属性


    var book={
    _year:2004,
    edition:1
    };
    Object.defineProperty(book,"year",{
    get:function(){
    return this._year;
    },
    set:function(newValue){
    if(newValue>2004)
    {
    this._year=newValue;
    this.edition+=newValue-edition;
    }
    }
    });
    book.year=2005;
    alert(book.edition);//2

    defineProperties可以让你设置属性的配置,例如如何赋值,如何返回,是否允许被for in遍历,不过这多半是用在oop中的,因为你可能会需要设置对象的私有属性,公共属性是不需要这么复杂的创建过程。

    至于其中包含了set和get方法,你可以这么理解,属性的赋值与获取必须按照你设定的方法来执行,例如
    get:function(){
    return this._year;
    },
    在调用book.year时就会自动执行get方法,返回你要返回的东西( return this._year),

    同样在你执行book.year=111;同样会自动执行set方法,将会按你的要求设置某些东西。

    总之赋值与获取都必须由年来控制,比如你永远需要一个大于0的数字做分母,那么你就能控制了
    ,只要设置好set函数就行。

    这些方法按理说应该是用在oop中,js中只要是对象都能用,看你的程序要求了
    _year 是属性:静态的 只读 year 是方法:可以理解为私有函数,用于表示只能通过对象方法访问的属性
  • 相关阅读:
    百度地图代码API
    3层下拉列表
    stl+数论——1247D
    数论+乱搞——cf181B
    思维+multiset优化——cf1249E
    线性基思想+贪心——cf1249C
    tarjan求强连通+缩点——cf1248E
    排序+模拟+优先队列——cf1248E
    栈+括号序列+暴力枚举——cf1248D1
    二分+贪心——cf1251D
  • 原文地址:https://www.cnblogs.com/aixiuxiu/p/6222410.html
Copyright © 2011-2022 走看看