ES5给object扩展的一些静态方法
1. Object.create(prototype[, descriptors]) : 创建一个新的对象
1). 以指定对象为原型创建新的对象
2). 指定新的属性, 并对属性进行描述
value : 指定值
writable : 标识当前属性值是否是可修改的, 默认为true
get : 用来得到当前属性值的回调函数
set : 用来监视当前属性值变化的回调函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
'use strict'
// 1. Object.create(prototype,[descriptors])
// 作用:以指定对象作为原形的创建的新对象
// 为新的对象指定新的属性,并对属性进行描述
// value:指定值
// writable 标识当前属性是否可以被修改,默认为false
// configurable:标识当前属性是否可以被删除,默认为false
// enumerable:标识当前属性是否能用for in 枚举,默认为false var obj={username:'damu',age:}
var obj1={}
//Object O是大写
// obj1=Object.create(obj);
// console.log(obj1) //obj1 添加属性
// obj1=Object.create(obj,{
// sex:{
// value:'男'
// } // })
// console.log(obj1.sex) //修改obj1的属性
// obj1=Object.create(obj,{
// sex:{
// value:'男',
// writable:true
// } // })
// console.log(obj1.sex)
// obj1.sex='女'
// console.log(obj1.sex); // 删除obj1的属性
// obj1=Object.create(obj,{
// sex:{
// value:'男',
// writable:true,
// configurable:true
// } // })
// console.log(obj1.sex)
// obj1.sex='女'
// console.log(obj1.sex)
// delete obj1.sex;
// console.log(obj1) // for in 枚举
obj1=Object.create(obj,{
sex:{
value:'男',
writable:true,
configurable:true,
enumerable:true
} }) for(var i in obj1){
console.log(i)
} </script>
</body>
</html>
Object create
2. Object.defineProperties(object, descriptors) : 为指定对象定义扩展多个属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>03_Object扩展</title>
</head>
<body>
<!--
ES5给Object扩展了好一些静态方法, 常用的2个:
. Object.create(prototype, [descriptors])
* 作用: 以指定对象为原型创建新的对象
* 为新的对象指定新的属性, 并对属性进行描述
value : 指定值
writable : 标识当前属性值是否是可修改的, 默认为false
configurable: 标识当前属性是否可以被删除 默认为false
enumerable: 标识当前属性是否能用for in 枚举 默认为false . Object.defineProperties(object, descriptors)
* 作用: 为指定对象定义扩展多个属性
* get :用来获取当前属性值得回调函数
* set :修改当前属性值得触发的回调函数,并且实参即为修改后的值
* 存取器属性:setter,getter一个用来存值,一个用来取值
-->
<script type="text/javascript"> //Object.defineProperties(object, descriptors)
var obj2 = {
firstName : 'curry',
lastName : 'stephen'
};
Object.defineProperties(obj2, {
fullName : {
get : function () {
return this.firstName + '-' + this.lastName
},
set : function (data) {
var names = data.split('-');
this.firstName = names[];
this.lastName = names[];
}
}
});
console.log(obj2.fullName);
obj2.firstName = 'tim';
obj2.lastName = 'duncan';
console.log(obj2.fullName);
obj2.fullName = 'kobe-bryant';
console.log(obj2.fullName);
</script>
</body>
</html>
3.
对象本身的两个方法
* get propertyName(){} 用来得到当前属性值的回调函数
* set propertyName(){} 用来监视当前属性值变化的回调函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--
对象本身的两个方法
* get propertyName(){} 用来得到当前属性值的回调函数
* set propertyName(){} 用来监视当前属性值变化的回调函数
-->
<script type='text/javascript'>
var obj = {
firstName : 'kobe',
lastName : 'bryant',
get fullName(){
return this.firstName + ' ' + this.lastName
},
set fullName(data){
var names = data.split(' ');
this.firstName = names[];
this.lastName = names[];
}
};
console.log(obj.fullName);
obj.fullName = 'curry stephen';
console.log(obj.fullName); </script>
</body>
</html>
ES5给object扩展的一些静态方法的更多相关文章
- ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal ...
- es6之Object扩展及内部属性的总结
对象扩展: 1.Object.is(A,B) :比较两个值是否相等,取代===运算:只要值相等代表相等:其中NAN和NAN相等:+0和-0不相等: 2.Object.assign(target,sou ...
- ES5特性Object.seal
一个对象在默认状态下: 1,extensible:可扩展(可以添加新的属性) 2,configurable:可配置(可以改变原有属性的特性,比如修改属性的enumerable) Object.seal ...
- 从零开始学 Web 之 ES6(二)ES5的一些扩展
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 利用babel工具将es6语法转换成es5,Object.assign方法报错
一.新建工程初始化项目 1.新建工程文件夹这里起名叫做es6,然后在里面创建两个文件夹分别为src .dist如下图:(src为待转换es6 js存放目录,dist为编译完成后的es5 js存放目录) ...
- js Object扩展自定义方法,jQuery抛出 Uncaught TypeError: matchExpr[type].exec is not a function
使用Jquery的时候,想在Object原型上添加自己扩展的方法的时候,启动项目之后,打开网页就会报如上错误信息,经过测试,可以在Object下的具体类型上进行扩展自定义方法,如String,Arra ...
- 给Object扩展新方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 解决webpack和gulp打包js时ES6转译ES5时Object.assign()方法没转译成功的问题
在webpack或gulp打包的配置文件中package.json 引入"@babel/plugin-transform-object-assign": "^7.2.0& ...
- ES5_03_Object扩展
ES5给Object扩展了一些静态方法, 常用的2个: 1. Object.create(prototype, [descriptors]) * 作用: 以指定对象为原型创建新的对象 * 为新的对象指 ...
随机推荐
- js模块化的历史
了解模块化开发的历史,可以帮助我们理解 模块化开发的形式是怎么样的,对我们深入学习模块化开发会有很大的帮助: 一.服务器端JS的模块化 nodeJS的出现 ------官网: http://nod ...
- Pandaria(Kruskal重构树+线段树合并)
题意 是 有n个花园 一个花园内所有的花的颜色都是一样的 有很多种不同的颜色 花园到花园之间有路,走不同的路有不同的代价 如果选一个点作为起点 只走小于等于w的路 可以经过的这些花园里 那种 ...
- 【HDOJ】P1007 Quoit Design (最近点对)
题目意思很简单,意思就是求一个图上最近点对. 具体思想就是二分法,这里就不做介绍,相信大家都会明白的,在这里我说明一下如何进行拼合. 具体证明一下为什么只需要检查6个点 首先,假设当前左侧和右侧的最小 ...
- linux 下格式化命令小记
mkfs.ext4 /dev/sda1 # 格式化为ext4分区mkfs.ext3 /dev/sda1 # 格式化为ext3分区mkfs.ext2 /dev/sda1 # 格式化为e ...
- 前端之script标签注意事项
在一对script 标签中一旦有错误,其后续的代码都不会执行 一对script标签有问题,不会影响其他script标签代码的执行 当一对script标签的作用是引入外部的js文件的时候,就不要在其内部 ...
- Tools: windbg 使用指南
windbg使用 符号表C:\Symbols; SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols 系统变量_NT_SYMBOL_PAT ...
- zabbix active模式以及自定义key not Supported的解决
zabbix active模式 active模式适用场景 zabbix server端无法直连agent端,比如agent为内网机器,仅有内网ip,没有公网ip,但是内网机器能够访问server端 a ...
- 使用Fiddler抓取手机包
配置Fiddler 设置抓取HTTPS包 允许为外部连接 配置移动端 移动端需要能够连接到主机做代理, 设置移动端的网络, 端口为Fiddler的端口, 然后给移动端安装证书, 访问主机名+代理端口号 ...
- python编程语言学习day05(1)
模块(不起与python相关模块的名字) 1.random random.random() 在0与1之间取随机数 random.randint(a,b) 在a,b之间取随机整数,包括边界 ra ...
- 使用Git 上传文件到云端(版本库)
第一步:本地初始化Git版本库 git init 第二步:链接码云(云端) git remote add orgin "你的远程仓库地址"(复制链接后结尾是.git,如果没有记得加 ...