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]) * 作用: 以指定对象为原型创建新的对象 * 为新的对象指 ...
随机推荐
- 什么是CI/CD?
CI, CD AND CD 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语.CI很容易理解,就是持续集成.但是CD既可以指代码持续交付,也可理解为代码持续部署.CI和 ...
- 关于scroll实现侧边导航栏
需求为一个简单的scroll效果,侧边选项卡跟随屏幕向下拖动变颜色的.点击侧边选项卡,跳转到相应模块. 索性上网找了一下类似的效果.附带源码地址 https://blog.csdn.net/drea ...
- 制作 U 盘启动盘
制作 U 盘启动盘 这篇文章说的是 U 盘启动盘是如何运作的,同时有一个既能装 Windows 又能装 Linux 的 U 盘启动盘的例子. U 盘启动盘 当按下开机键后,电脑能启动我原本安装的操作系 ...
- Centos下的 docker安装
安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加软件源信息:sudo yum-config ...
- 微信小程序开发简易计算器改进版
微信小程序开发计算器有多种方法,但是大部分代码比较复杂.不容易理解.本案例进行了改进,主要是组件bindtap属性绑定的自定义函数clickBtn(),采用了switch语句,使得代码结构更加清晰,学 ...
- Android studio的ERROR: Unable to resolve dependency for 错误
同事拷贝一份工程给我,在我这里用AS编译的时候出现这个错误.按照网上很多的方法都不行,后来终于可以. 在AS中打开FILE->Setting->gradle->,在右边service ...
- zic2xpm - 将 ZIICS 象棋片段 (chess pieces) 转换为 XBoard (XPM/XIM) 片段的工具。
总览 SYNOPSIS zic2xpm file1 [file2 ...] 描述 zic2xpm 将一个或多个 ZIICS 片段文件转换为 XBoard 可用的格式.如果你给出一个以上的文件名,小心同 ...
- usermod -修改使用者帐号
总览 SYNOPSIS usermod [-c comment] [-d home_dir [-m]] [-e expire_date] [-f inactive_time] [-g initial_ ...
- django入门 -- 简单流程
django入门 -- 简单流程 简介 通过简单示例,使用django完成基本流程的开发,学习django的主要的知识点,在后续课程中会逐个知识点进行深入讲解 以“图书-英雄”管理为示例 主要知识点介 ...
- 树形dp换根,求切断任意边形成的两个子树的直径——hdu6686
换根dp就是先任取一点为根,预处理出一些信息,然后在第二次dfs过程中进行状态的转移处理 本题难点在于任意割断一条边,求出剩下两棵子树的直径: 设割断的边为(u,v),设down[v]为以v为根的子树 ...