ES5
-
Object.create(prototype, descriptors)
//创建对象
var o1 = {foo:'bar'};
var o2 = new Object();
//Object.create(proto,[descriptors]);
var o3 = Object.create(null); function Person(name) {
this.name = name;
}
var p1 = new Person('sindy');
var p2 = Object.create(Person.prototype, {
age: {
value: 18,
writable: false,
enumerable: false,
configurable: true,
//value , writable 和 getter setter函数不能同时设置
/*get: function () {
if (typeof age === 'undefined') {
return 'not set age value yet';
} else {
return 'your age:' + age;
}
},
set: function (a) {
age = a;
if (this.cTime == 0) {
console.log('set age OK');
this.cTime++;
} else {
console.log('change age OK');
}
}
},*/
cTime: {
value: 0,
writable: true
}
}); -
Object.defineProperty(object, propertyName, descriptor)
var p1 = new Person('alice');
Object.defineProperty(p1, 'name', {value:'alice2', writable:true, enumerable: false, configurable: false});
console.log(p1.name); //=> alice2
delete p1.name; //=> false configurable==flase,不能defineProperty重定义属性特性
Object.defineProperty(p1, 'name', {value:'kk', enumerable: true}); //=>error -
Object.defineProperties(object, descriptors)
var p1 = new Person('alice');
Object.defineProperties(p1,{
skill:{
value: 'singing',
writable: true,
enumerable: true,
configurable: false
},
age: {
value: 18,
writable: true,
enumerable: true,
configurable: false
}
});
p1.age //18
p1.skill //singing -
Object.getOwnPropertyDescriptor(obj, propertyName)
获取自有属性的descriptorfunction Person (n){ this.name = n; }
Person.prototype = {
constructor: Person,
hi: function(name){ console.log('hi,'+name);}
};
var p1 = new Person('alice');
var nameDescriptor = Object.getOwnPropertyDescriptor(p1, 'name');//=>{value:'alice', enumerable: true, writable: true, configurable: true} var des = Object.getOwnPropertyDescriptor(p1, 'hi');//=>undefined -
Object.getOwnPropertyNames(obj)
获取对象所有的自有属性名//接上
p1.age = 11;
var props = Object.getOwnPropertyNames(p1); //=> ['name', 'age'] -
Object.preventExtensions(obj)
禁止扩展对象,即不能添加属性到对象上。//接上
Object.preventExtensions(p1);
p1.home = 'HK';
console.log(p1.home); //=> undefined -
Object.isExtensible(obj)
判断对象是否可扩展//接上
Object.isExtensible(p1);//=> false -
Object.seal(obj) , Object.isSealed(obj)
若对象为isSeal状态则不能添加或删除属性, 但可以修改现有属性的值//接上
Object.seal(p1);
Object.isSealed(p1); //true
delete p1.name;//=>false
p1.like = 'shopping';
console.log(p1.like); //=> undefined -
Object.freeze(obj) , Object.isFrozen(obj)
冻结对象(不能添加或删除属性,不能修改现有属性) freeze -> seal -> configurable:false 限制的严格程度递减Object.freeze(p1);
Object.isFrozen(p1); //=> true
p1.name = 'alice2';
console.log(p1.name); //=> alice
p1.school = 'hkzw';
console.log(p1.school); //=> undefined -
Object.getPrototypeOf(obj);
获取对象的原型对象var proto = Object.getPrototypeOf(p1);//=>{constructor: Person, hi: function(){..}}
Array.isArray(arg)
[].indexOf(val,[pos])
[].lastIndexOf(val, [pos])
[].every(fn(v, i, arr),[context])
[].some(fn(v,i, arr), [context])
[].forEach(fn(v, i, arr), [context])
[].filter(fn(v, i, arr), [context])
[].map(fn(v, i, arr), [context]);
[].reduce(fn(prev, curr, i, arr), [primitive]);
[].reduceRight(fn(prev, curr, i, arr), [primitive]);
new Date().toJSON()
序列化日期对象 输出:"2016-03-14T07:36:09.602Z"
String.prototype.trim
删除字符串两端空格(" touch ").trim(); => touch
es5 api的更多相关文章
-
js基础知识温习:构造函数与原型
构造函数 构造函数主要用于初始化新对象.按照惯例,构造函数名第一个字母都要大写. 构造函数有别于其它函数在于它使用new操作符来调用生成一个实例对象.换句话说,如果一个函数使用new操作符来调用,则将 ...
-
[Effective JavaScript 笔记]第31条:使用Object.getPrototypeOf函数而不要使用__proto__属性
ES5引入Object.getPrototypeOf函数作为获取对象原型的标准API,但由于之前的很多js引擎使用了一个特殊的__proto__属性来达到相同的目的.但有些浏览器并不支持这个__pro ...
-
ES5对Array增强的9个API
为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...
-
关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结
起因:工作用经常用到操作数组的方法,这里进行一下总结,我尽量以简洁的语言概括每个方法(api)的作用.如果您想快速定位,可以Control+F 然后搜相应的方法即可定位 :) ES3的数组方法 joi ...
-
ES5新增数组方法测试和字符串常见API测试
首先是ES5新增数组方法测试: <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
-
学习笔记-es5新增的一些数组的API(不全)-字符串-字符串API(不全)
### es5新增的数组的api + indexOf() 搜索数组中的元素,并返回它所在的位置. arr.indexOf(str,index) 参数: str为要查找的字符串 index为开始查找的下 ...
-
ES5新特性:理解 Array 中增强的 9 个 API
为了更方便的对JS中Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.index ...
-
ES5.X相关API和技巧汇总
https://blog.csdn.net/laoyang360/article/details/77412668
-
【转】浅谈JavaScript、ES5、ES6
什么是JavaScript JavaScript一种动态类型.弱类型.基于原型的客户端脚本语言,用来给HTML网页增加动态功能.(好吧,概念什么最讨厌了) 动态: 在运行时确定数据类型.变量使用之前不 ...
随机推荐
-
一个简单的消息提示jquery插件
最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...
-
java面向对象学习笔记
1.内部类 //外部类HelloWorld public class HelloWorld{ //外部类的私有属性name private String name = "imooc" ...
-
Struts2框架(5)---result结果集
result结果集 上一篇文章主要讲Struts2框架(4)---Action类访问servlet这篇主要讲result结果集 在Struts.xml中的result元素指的是:指定动作类的动作方法执 ...
-
商城项目实战 | 2.1 Android 仿京东商城——自定义 Toolbar (一)
前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 现在很多的 APP 里面都有自己的自定义风格,特别是京东商城中自 ...
-
lightOJ 1258 Making Huge Palindromes(KMP)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1258 就是求逆串和原串的匹配长度 答案就是原串长度的2倍减去匹配长度即可 第一次我将原 ...
-
[国嵌笔记][008-009][远程登录Linux]
[国嵌笔记][008][远程登录Linux] 1.windows与Linux能够相互ping通 2.关闭Linux防火墙 /etc/init.d/iptables stop 3.通过ssh(字符界面) ...
-
xhr是什么文件类型?
xhr:XMLHttpRequest在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新. 是Ajax的一种用法,而Ajax并不是一门语言,只是一种不需要加载整个网 ...
-
【Python】unittest-4
#练习1: import random import unittest from TestCalc import TestCalcFunctions class TestSequenceFunctio ...
-
Android多线程操作sqlite(Sqlite解决database locked问题)
参考http://blog.csdn.net/sdsxleon/article/details/18259973 很好 https://github.com/2point0/Android-Data ...
-
C#使用ICSharpCode.SharpZipLib压缩后进行web批量下载文件
参考:http://blog.csdn.net/kongwei521/article/details/51167903#