JavaScript对象原型

  • 所有JavaScript对象都从原型继承对象和方法
  • 日期对象继承自Date.prototype,数组继承自Array.prototype,对象构造器新建的对象Person继承自Person.prototype
  • Object.prototype位于原型继承连的顶端
  • 日期对象、数组对象、Person对象都继承自Object.prototype

JavaScript prototype允许在对象构造器函数外面为构造器添加新属性和新方法

<script>
//对象构造器
function Person(f,l,age,eyeColor){
this.firstName = f;
this.lastName = l;
this.age = age;
this.eyeColor = eyeColor;
//为构造器添加属性和方法,必须在构造器函数里面添加,不能在外面添加(除非使用prototype)
this.changeName = function(name){
this.lastName = name;
};
} Person.prototype.nationality = "China";
Person.prototype.changeAge = function(newAge){
this.age = newAge;
};
var zhangsan = new Person("zhangsan","lisi",13,"blue");
var liuliu = new Person("liuliu","qiqi",13,"blue");
zhangsan.changeAge(100);
// document.getElementById("demo").innerHTML = zhangsan.nationality;
document.getElementById("demo").innerHTML = zhangsan.age;
</script>

ES5特性

<script>
//ES5新的对象方法 //添加或更改对象属性
Object.defineProperty(obj, property, desc) //添加或更改多个对象属性
Object.defineProperties(obj, descriptions) //访问属性
Object.getOwnPropertyDescriptor(obj, property) //以数组形式返回所有属性
Object.getOwnPropertyNames(obj) //以数组形式返回所有可枚举的属性
Object.keys(obj) //访问原型
Object.getPrototypeOf(obj) //组织向对象添加属性
Object.preventExtensions(obj) //如果可将数学添加到对象,返回true
Object.isExtensible(obj) //防止更改对象属性
Object.seal(obj) //如果对象被密封,返回true
Object.isSealed(obj) //防止对对象进行任何更改
Object.freeze(obj) //如果对象被冻结,返回true
Object.isFrozen(obj)
</script>

ES5允许修改以下属性元数据:

writable : true      // 属性值可修改
enumerable : true // 属性可枚举
configurable : true // 属性可重新配置
writable : false // 属性值不可修改
enumerable : false // 属性不可枚举
configurable : false // 属性不可重新配置

设置为只读:

列出所有属性,返回数组:

ES5添加getter和setter

ES5添加getter、setter方法实现计数器:

25 JavaScript对象原型&ES5新的对象方法的更多相关文章

  1. js给原型增加新属性和方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. JS中定义对象原型的两种使用方法

    第一种: function Person() { this.username = new Array(); this.password = "123"; } Person.prot ...

  3. JavaScript对象原型写法区别

        体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...

  4. JavaScript对象原型写法详解

        体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...

  5. 深度剖析前端JavaScript中的原型(JS的对象原型)

          这张图片有点劝退了,哈哈哈~    通过原型机制,JavaScript 中的对象从其他对象继承功能特性:这种继承机制与经典的面向对象编程语言的继承机制不同.本文将探讨这些差别,解释原型链如 ...

  6. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  7. JavaScript学习12 JS中定义对象的几种方式【转】

    avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...

  8. 原型模式(Prototype Pattern)--对象的克隆

    定义:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象; 原型类的核心在于如何实现克隆方法: 能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个类支持被复制; 通 ...

  9. 原型模式(Prototype)(对象、克隆广告邮件)

    有些对象创建过程较为复杂,而且有些时候需要频繁的创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后复制这个原型对象的方法创建更多同类型的对象.这就是原型模式的动机. 原型模式的主要思想 ...

随机推荐

  1. 路飞-celery框架

    Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/la ...

  2. 故障解决 | win10没声音及找不到Realtek高清音频管理器

    重装 win10 系统后,电脑没声音,更新驱动以及万不得已下载驱动精灵都没有解决. 后来发现在“硬件和声音”中没有Realtek高清音频管理器,之后找到解决办法如下: 1. 找到Realtek高清音频 ...

  3. requests.packages.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme

    python3 -m pip install -U requests[socks]

  4. 题解 【洛谷P4290】 [HAOI2008]玩具取名

    这道题很明显是区间DP. 为了方便表示,我们可以将'W'.'I'.'N'.'G'分别设为1.2.3.4. 另外,DP可能有点丑,记忆化搜索可能写起来更容易理解. AC代码: #include < ...

  5. Android开发实战——记账本(5)

    开发日志——(5)     今天打算将图标的功能实现,将打开图表的选项放在右上方,所以重写MainActivity中的onOptionsItemSelected方法.增添Chart选项 public ...

  6. 线程池(ExecutorService)初体验

    背景:查询月统计数据,因为查询日统计数据功能已经实现.月统计数据,只是参一个List(date) 参数,for循环调用日统计,然后把结果整合就OK. 问题:单线程跑  太耗时间 解决方案:使用多线程, ...

  7. 使用Idea构建springmvc框架,出现no bean named 'cacheManager' is defined 错误

    由于IDEA的自动补全功能非常强大,当你配置 <mvc:annotation-driven/> 后编译器会帮你自动补全上面两个配置文件约束.这个时候如果你没注意的就会爆出一个很莫名奇妙的错 ...

  8. springMVC 校验时,CustomValidationMessages.properties中的错误提示信息的中文乱码 问题

    今天在学习springmvc的校验时,遇到了CustomValidationMessages.properties配置文件的信息,才错误提示时是乱码的问题:在网上找了很多方法都没解决:最后原来是在配置 ...

  9. MP4转mp3

    python实现: 依赖: glob,pydub "Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not wo ...

  10. FreeRTOS学习笔记1:任务

    任务特性每个任务有自己的环境,不依赖于其他任务与调度器任何时间点只有一个任务运行.由调度器决定上下文环境:(寄存器值.堆栈内容等)调度器保证的就是任务开始执行时的上下文环境与上一次退出时相同所以每个任 ...