1.Object新增一个方法,Object.create();,用来以一个对象为基础创建另一个对象,新建的对象的__proto__指向基础对象

 var obj = {name:'maycpou',age:18};
        var obj1 = Object.create(obj,{
            sex:{//新增一个sex属性,该属性在obj1上而不是在__proto__上
                value:'男',//sex属性的值
                writable:true,//sex属性是否为可写的,即是否能用obj1.sex='女'改变属性的值,默认是false
                configurable:true,//sex属性是否可被删除,即是否能用deleteobj1.sex删除sex属性,默认是false
                enumerable:true//sex属性是否是可被列举的,即用for(var i in obj1){console.log(i);}是否能遍历到sex属性,默认是false
            }
        });
 console.log(obj1);
 
2.Object新增一个方法,Object.defineProperties();,用来给一个对象新增属性
  var obj2 = { firstName: 'tom', lastName: 'boston' };
        Object.defineProperties(obj2, {//这个方法用于给一个对象添加属性
            fullName: {//新增的属性名称是fullName
                get: function () {//设置get方法,用来获取新增属性fullName的值
      return this.firstName +' '+ this.lastName;
                },
                set: function (data) {//这个方法在fullName属性即将改变的时候调用,data是即将改变的fullName的值
                    //当使用obj2.fullName = 'jack foo';的时候,并不会直接改变fullName的属性,
                    //而是会调用这个方法,data的值为maycpou
                    var names = data.split(' ');
                    this.firstName = names[0];
                    this.firstName = names[1];
                }
            }
        });
        obj2.fullName='jack foo';
        console.log(obj2.fullName);
上面的写法类似于:var obj2 = {
  firstName: 'tom', 
  lastName: 'boston',
  get fullName(){
    return this.firstName +' '+ this.lastName;    
     }
  set fullName(date){
     var names = data.split(' ');
               this.firstName = names[0];
               this.firstName = names[1];
  }
}

ES5-Object扩展方法的更多相关文章

  1. ES5 Object.create 方法

    Object.create(proto[, propertiesObject])The Object.create() method creates a new object with the spe ...

  2. ES5 Object.defineProperty 方法

    先看一个例子: var o = {}; o.a = 1; // 等待于: Object.defineProperty(o, 'a', { value: 1, writable: true, confi ...

  3. ES5给object扩展的一些静态方法

    1. Object.create(prototype[, descriptors]) : 创建一个新的对象 1). 以指定对象为原型创建新的对象 2). 指定新的属性, 并对属性进行描述 value ...

  4. 在ES5实现ES6中的Object.is方法

    ES6中对象的扩展里面添加了一个Object.is方法,用于比较两个值是否严格相等.内部计算与 === 行为基本一致.那么我们怎么在不支持这个方法的ES5中实现呢? 首先我们需要搞清楚两点,1:Obj ...

  5. .NET:不要使用扩展方法扩展Object对象。

    C#的扩展方法算是一种Minin(掺入)机制,掺入方法有其合理的使用场景,这里说说一种不好的使用场景(个人意见):不要使用扩展方法扩展Object对象.扩展Object会对所有类型的示例有侵入,特别是 ...

  6. 抛弃 .NET 经典错误:object null reference , 使用安全扩展方法? 希望对大家有帮助---Bitter.Frame 引用类型的安全转换

    还是一样,我不喜欢长篇大论,除非关乎我设计思想领域的文章.大家过来看,都是想节省时间,能用白话表达的内容,绝不长篇大论.能直接上核心代码的,绝不上混淆代码. 长期从事 .NET 工作的人都知道..NE ...

  7. Object、Function、String、Array原生对象扩展方法

    JavaScript原生对象的api有些情况下使用并不方便,考虑扩展基于Object.Function.String.Array扩展,参考了prototype.js的部分实现,做了提取和修改,分享下: ...

  8. List<Object>对象集合一些扩展方法

    // 商品集合信息            List<Product> list = new List<Product>()            {               ...

  9. 解决webpack和gulp打包js时ES6转译ES5时Object.assign()方法没转译成功的问题

    在webpack或gulp打包的配置文件中package.json 引入"@babel/plugin-transform-object-assign": "^7.2.0& ...

  10. javascript ES5 Object对象

    原文:http://javascript.ruanyifeng.com/stdlib/object.html 目录 概述 Object对象的方法 Object() Object.keys(),Obje ...

随机推荐

  1. 域名网址在QQ微信被拦截怎么解决 如何样才能让被微信屏蔽的网址正常访问

    微信域名防封技术及微信域名被封解决方案. 微信又封杀我的域名了,微信域名被封怎么办? 做微信项目的兄弟们总跟我唠嗑抱怨,这个无可厚非, 微信如果不做屏蔽措施,微信里面传播传播的信息良莠不齐不治理, 肯 ...

  2. pyautocad

    首部必须 #!/usr/bin/env python # -*- coding: utf-8 -*- 导入pyautocad import pyautocad import re # 设置python ...

  3. Linux - Shell - find - 进阶: 时间与大小

    概述 继续 find 这次的内容, 参数稍微要 复杂那么一丢丢 背景 刚学会了 基础 的参数 现在来了解一些 时间 和 空间 的参数 一说到操控时间空间, 感觉立马起来了... 准备 OS cento ...

  4. docker镜像 - 下载、创建镜像和导入导出镜像

    实验环境 CentOS 7.5 安装并启动docker yum install -y docker systemctl start docker 镜像 安装镜像 docker pull [OPTION ...

  5. X86现代汇编·02

    下面4这个寄存器只能用16位或3N位名称访问3N位寄存器 :ESI EDI EBP ESP 16位寄存器: SI DI BP SP 特殊用法:乘除指令默认用EAX默认使用ECX为循环计数器ESP用于寻 ...

  6. 解决ubuntu和win10双系统时间不一致

    1.在ubuntu下安装ntpdate sudo apt install ntpdate 2.设置同步windows时间 sudo ntpdate time.windows.com 3.把时间更新到硬 ...

  7. go基础_defer

    defer defer是go语言中的关键字 特点:FILO 作用:保障一些申请的资源最终得以释放 func main() { defer fmt.Println("line-1") ...

  8. Docker 上安装、启动 MySQL

    在docker仓库中搜索mysql的镜像: docker search mysql ; 下载镜像,这里我们安装 5.7 版本 docker pull mysql:[TAG]; 不写TAG默认拉取最新版 ...

  9. SpringBoot 开发的那些小趣事儿

    经过这次在公司实习中获取到的经历,我发现确实有时候书本上的知识发挥的作用微乎其微,好像是被问题打了太极拳一样,你明明想去攻克这个地方,他却给你报了其他地方的错误. 平常的一些小项目根本就不能匹配到企业 ...

  10. Coursera-吴恩达机器学习课程笔记-Week2

    参考资料: 吴恩达教授机器学习课程 机器学习课程中文笔记 Week2 一. 多变量线性回归(Linear Regression with Multiple Variables) 多变量就时当一个exa ...