25 JavaScript对象原型&ES5新的对象方法
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新的对象方法的更多相关文章
- js给原型增加新属性和方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JS中定义对象原型的两种使用方法
第一种: function Person() { this.username = new Array(); this.password = "123"; } Person.prot ...
- JavaScript对象原型写法区别
体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...
- JavaScript对象原型写法详解
体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...
- 深度剖析前端JavaScript中的原型(JS的对象原型)
这张图片有点劝退了,哈哈哈~ 通过原型机制,JavaScript 中的对象从其他对象继承功能特性:这种继承机制与经典的面向对象编程语言的继承机制不同.本文将探讨这些差别,解释原型链如 ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- JavaScript学习12 JS中定义对象的几种方式【转】
avaScript学习12 JS中定义对象的几种方式 转自: http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...
- 原型模式(Prototype Pattern)--对象的克隆
定义:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象; 原型类的核心在于如何实现克隆方法: 能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个类支持被复制; 通 ...
- 原型模式(Prototype)(对象、克隆广告邮件)
有些对象创建过程较为复杂,而且有些时候需要频繁的创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后复制这个原型对象的方法创建更多同类型的对象.这就是原型模式的动机. 原型模式的主要思想 ...
随机推荐
- dremio的学习点滴
在连接数据源后,进行数据源反射的创建,dremio会在本地创建一个类似于副本的文件,具体目录未知,当下次去执行sql时,则会启动加速器进行查询速度的优化. 反射策略: full update:数据源全 ...
- php:对象(object)数据类型实例详解
什么是对象? 对象是存储数据和有关如何处理数据的信息的数据类型.是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位.一个对象由一组属性和对这组属性进行操作的一组服务组成. 语法 在 PHP ...
- Linux - shell - xargs - 基础
概述 简述 xargs 的使用 背景 尝试批量操作文件 发现一些问题小问题 然后, 尝试解决 准备 环境 OS centos7 1. 操作: 尝试创建多个 文本文件 概述 尝试创建多个文本文件 1. ...
- java &&和&与逻辑运算区别
二者都表示与运算,同真为真,遇假即假 && 具有短路功能,前面为false后面不在预算直接表达式为false; &还可以用作位运算符,当&操作符两边的表达式不是 boo ...
- 如何在Access中使用SQL语句
如何在Access中使用SQL语句 创建,查询设计,弹出[显示表]窗口,点击[关闭]将该窗口关掉.这时软件会进入[设计]工具栏,我们点击工具栏左侧的[SQL视图].[SQL视图]默认选择的是[设计视图 ...
- bugku web 5
首先进入网站http://123.206.87.240:8002/web5/index.php 进入之后就会看到 然后点击F12就会打开后台 然后就会发现有一串东西就是这个然后经过搜索是jsfuck ...
- golang采坑记录
安装golang,引入第三方库,采坑 1.获取安装包 go语言中文网:https://studygolang.com/dl 官网地址:https://studygolang.com/dl 2.下载 选 ...
- Caffe实例
下载链接以及说明: 1.caffe代码按照官方教程下载windows分支下面的就可以了(https://github.com/BVLC/caffe/tree/windows). 2.cmake(ht ...
- P&R 3
Floorplan: 要做好floorplan需要掌握哪些知识跟技能? 通常,遇到floorplan问题,大致的debug步骤跟方法有哪些? 如何衡量floorplan的QA? Floorplan是后 ...
- Speech Bandwidth Extension With WaveNet
利用WAVENET扩展语音带宽 作者:Archit Gupta, Brendan Shillingford, Yannis Assael, Thomas C. Walters 博客地址:https:/ ...