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,内存,或者是耗时的网络或文件操作的时候。
    -这个属性值不需要立即使用,以后才会需要,或者可能根本不需要
    -计算这个属性会消耗大量的资源,以后不需要重新计算。

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

  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/diaoxiong/p/5609602.html
Copyright © 2011-2022 走看看