zoukankan      html  css  js  c++  java
  • ES5 Function Get

    Getter

    get 绑定一个函数到对象属性上面。当引用这个属性名的时候,绑定的这个函数就会被调用。
    

    Syntax

    `{get prop(){...}}
     {get [expression](){...}}`
    

    Parameters

    ##### prop
    `绑定到指定函数的属性名。
    ##### expression
     在ES6中,你可以声明一个表达式,来计算一个属性名。
    

    Description

    有时,你想通过访问属性名来获取一个动态计算的值,或者想不通过方法调用就获取对象内部的状态。Get方法可以实现这个需求。
    

    尽管可以通过组合使用Get,Set方法来设置一个伪装的属性设置和访问,但是一个对象不能同时有一个传统的属性定义和用Get定义的属性

    注意下面的Get语法
        *属性值函数不能有参数
        *不能有两个相同的Get,或者一个Get一个传统的属性名定义方式。({get x(){}, get x(){}) 或{x:...,get x(){}}都是不允许的)
    

    Getter可以通过delete删除

    Example

    定义一个Getter

    下面的代码会在obj上面定义一个伪属性 first,来获取log的第一个属性。
    `var log = ['text']
     var obj = {
        get first(){
            return log[0];
        }
    }`
    **注意直接给first赋值不会有作用**
    

    用delete删除Getter

    `delete obj.first`
    

    使用defineProperty定义Getter

    使用Object.defineProperty 来给对象随时添加Getter。
    var obj = {count:0} Object.defineProperty(0,'size',{get:function(){return 1;}} console.log(o.b) //运行getter,返回1

    使用计算的属性名(es6 的提议,还未广泛使用)

    var expr = "name"; var obj = { get [expr](){return 'zs'} }; console.log(obj.name)//返回 zs

    智能、自写,懒 getters

    通过Getters,我们可以定义属性,并且这些属性直到使用的时候才会去计算。这就是说,如果这个属性不使用,就会一直不计算。
    

    这样就延迟或者消除了计算属性值得消耗。
    另外的优化技术是:懒计算或者延迟计算属性值并且为后面的使用缓存计算结果。这个技术叫 智能(memoized) getter。属性值
    第一次计算的时候被缓存起来以后就不用重新计算。
    在下列场景,这个技术很有用。
    -如果计算消耗大量的cpu,内存,或者是耗时的网络或文件操作的时候。
    -这个属性值不需要立即使用,以后才会需要,或者可能根本不需要
    -计算这个属性会消耗大量的资源,以后不需要重新计算。

    但是在属性需要每次重新计算的时候,这个方法就不适用了。

  • 相关阅读:
    二分+树状数组/线段树(区间更新) HDOJ 4339 Query
    数论(GCD) HDOJ 4320 Arcane Numbers 1
    拓扑排序/DFS HDOJ 4324 Triangle LOVE
    离散化+线段树/二分查找/尺取法 HDOJ 4325 Flowers
    KMP HDOJ 4300 Clairewd's message
    高精度模板
    前缀+排序 HDOJ 4311 Meeting point-1
    Kruskal HDOJ 4313 Matrix
    最短路(Dijkstra) HDOJ 4318 Power transmission
    (转)C语言运算符优先级 详细列表
  • 原文地址:https://www.cnblogs.com/diaoxiong/p/5609602.html
Copyright © 2011-2022 走看看