ES 5構文
15377 ワード
ES 5の新しい文法は主にObjectと、Array操作に現れ、同時にJSON、Function、DateとStringタイプに関連している.
1.Object
ES 5の最大の特徴はオブジェクト拡張の多くの方法である.
≪新規オブジェクト|New Objects|emdw≫:create(「クリーン」オブジェクトを新規作成します.ここで「クリーン」とは、プロトタイプチェーンがないことを意味します.)
構文:
propertiesObjectは、4つの値と2つの関数を持つペアです. value:プロパティの値 を設定します. writable:ブール値、属性が書き換えられるかどうかを設定し、デフォルトの属性値はfalse(書き換えられない) です. enumerable:ブール値、属性を列挙できるかどうかを設定します.デフォルトの属性値はfalse(列挙できません) です. configurable:ブール値、設定属性が削除できるかどうか、デフォルト属性値はfalse(削除できない) である.
2つの関数: get:関数、設定属性は結果 を返します. set:関数、パラメータ 具体的な使い方を見てみましょう.
writable:
configurable:
enumerable:
getとsetの使い方
注意:これはプロパティを取得および設定するための値です.writableと一緒に使用できません.そうしないと、次のようにエラーが発生します.
属性の設定:defineProperty(0 bj)と複数の属性defineProperties(Obj)の設定.
オブジェクトのフリーズ:
Seal(obj)対応:
Object.getOwnPropertyNames
Object.keys
keysは、すべてのenumerableがtrueである値をリストし、1つのオブジェクトが空のオブジェクトであるかどうかを判断するのに便利です.のように
次のようになります.
getownPropertyNameは、すべてのdefinePropertyメソッドをリストするために設定された値です.
オブジェクトをロック
Object.preventExtensions(O)はObjectに対応する.isExtensible:
メソッドは、オブジェクトの属性をロック、拡張できない、つまり新しい属性を増やすことはできないが、属性の値を変更することもできるし、属性を削除することもできる.isExtensibleは,オブジェクトが拡張可能か否かを判断するために用いられる.
Object.getOwnPropertyDescriptor(O,property)
このメソッドは、definePropertyメソッドが設定したpropertyプロパティを取得するために使用されます.
2.use strict
厳格モードの規定:宣言されていない変数付与値は、グローバル変数を作成するのではなく、 は、オブジェクトの字面量に同じ属性を一度だけ割り当てることなく、 を投げ出す. を放出する.変数は宣言後に使用する必要があります.
3.Array
Arrayには、データ型が配列であるか否かを判断する静的方法が構築されている
配列を操作する方法も多数用意されています.
その中で最も有用なのは、indexOf、map、reduce、filter、forEachの5つで、この5つの方法は字面の意味によってよく理解されています.
4.Dateタイムスタンプの取得
5.Function.prototype.bind(this,arg1,arg2)
もう一つの書き方があります.
6.String.prototype.trim
7.JSONの二つの方法
転載先:https://www.cnblogs.com/liuyinlei/p/6101674.html
1.Object
ES 5の最大の特徴はオブジェクト拡張の多くの方法である.
≪新規オブジェクト|New Objects|emdw≫:create(「クリーン」オブジェクトを新規作成します.ここで「クリーン」とは、プロトタイプチェーンがないことを意味します.)
構文:
Object.create(proto, [ propertiesObject ]);
proto , 。
proto null , TypeError 。null ( ” ”)
propertiesObjectは、4つの値と2つの関数を持つペアです.
2つの関数:
writable:
var account = Object.create(Object.prototype,{
type: {
value: " ",
//enumerable: false
//configurable: false
writable: false
}
});
account.type=" ";
console.log(account.type);
// , writable false
configurable:
var account = Object.create(Object.prototype,{
type: {
value: " ",
//enumerable: false
configurable: false,
writable: false
}
});account.type=" ";
delete account.type;
console.log(account.type);
// ,configurable: false
enumerable:
var account = Object.create(Object.prototype,{
type: {
value: " ",
enumerable: true,
configurable: false,
writable: false
}
});
for(var i in account){
console.log(account[i]);
// , enumerable true, undefined
}
getとsetの使い方
注意:これはプロパティを取得および設定するための値です.writableと一緒に使用できません.そうしないと、次のようにエラーが発生します.
function defineGetter(obj, name, getter) {
Object.defineProperty(obj, name, {
configurable: true,
enumerable: true,
get: getter
});
};
var req = {};
defineGetter(req, 'xhr', function xhr(){
var val = 'xmlhttprequestx' || '';
return val.toLowerCase() === 'xmlhttprequest';
});
console.log(req.xhr);
//false
属性の設定:defineProperty(0 bj)と複数の属性defineProperties(Obj)の設定.
オブジェクトのフリーズ:
Seal(obj)対応:
Object.isSealed
freeze(obj)対応:Object.isFrozen( seal(obj) , , :writable:false,configureable:false);
巡回プロパティ:Object.getOwnPropertyNames
Object.keys
keysは、すべてのenumerableがtrueである値をリストし、1つのオブジェクトが空のオブジェクトであるかどうかを判断するのに便利です.のように
(options.meta && Object.keys(options.meta).length)?“options ”:options
次のようになります.
var obj = {
"x":"y",
"x1":"y1"
};
var keys = Object.keys(obj);
console.log(keys);
//["x","x1"]
getownPropertyNameは、すべてのdefinePropertyメソッドをリストするために設定された値です.
var obj ={"attr1":"xyz"};
Object.defineProperty(obj,'type',{
value: " ",
enumerable: false,
configurable: true,
writable: false
});
var getPro = Object.getOwnPropertyNames(obj);
console.log(getPro); //["attr1","type"]
Object.keys(obj);// ["attr1"]
Object.defineProperty(obj,'type',{
value: " ",
enumerable: true,
configurable: true,
writable: false
});
var getPro = Object.getOwnPropertyNames(obj);
console.log(getPro); //["attr1","type"]
Object.keys(obj);// ["attr1","type"]
オブジェクトをロック
Object.preventExtensions(O)はObjectに対応する.isExtensible:
メソッドは、オブジェクトの属性をロック、拡張できない、つまり新しい属性を増やすことはできないが、属性の値を変更することもできるし、属性を削除することもできる.isExtensibleは,オブジェクトが拡張可能か否かを判断するために用いられる.
1 var o = {};
2 console.log(Object.isExtensible(o)); //true
3 o.lastname ="yinlei";
4 Object.preventExtensions(o);
5 console.log(Object.isExtensible(o)); //false
6 console.log(o.lastname); //yinlei
7 o.firstname="liu";
8 console.log(o.firstname); //undefined
9 delete o.lastname;
10 console.log("lastname="+o.lastname); //undefined
Object.getOwnPropertyDescriptor(O,property)
このメソッドは、definePropertyメソッドが設定したpropertyプロパティを取得するために使用されます.
var account = Object.create(Object.prototype,{
type: {
value: " ",
enumerable: false,
configurable: false,
writable: false
}
});
var getPro = Object.getOwnPropertyDescriptor(account,'type');
console.log(getPro);
//Object {value: " ", writable: false, enumerable: false, configurable: false}
2.use strict
厳格モードの規定:
ReferenceError
を放出する.SyntaxError。
with
文を使用してSyntaxError。
3.Array
Arrayには、データ型が配列であるか否かを判断する静的方法が構築されている
Array.isArray(["3","4"]);
//true
Array.isArray({"x":"y"});
//false
配列を操作する方法も多数用意されています.
その中で最も有用なのは、indexOf、map、reduce、filter、forEachの5つで、この5つの方法は字面の意味によってよく理解されています.
4.Dateタイムスタンプの取得
var date = new Date();
//1480312139830
console.log(date.getTime());
//ES5
Date.now() //Date now()
5.Function.prototype.bind(this,arg1,arg2)
1 function A(x){
2 this. x = x;
3 }
4
5 function B(y){
6 console.log(this.x + ":y=" + y );
7 }
8 B.bind(new A(5),6)();
もう一つの書き方があります.
/*express-mysql-session */
var done = function() {
this.setExpirationInterval();
if (cb) {
cb.apply(undefined, arguments);
}
}.bind(this);
6.String.prototype.trim
var str = " hello world ";
console.log(str.trim()); // jquery $.trim()
//hello world
7.JSONの二つの方法
//
JSON.stringify(obj); //obj ---> str
JSON.parse(str); //str ---> json
JSON.stringify(value[, replacer[, space]])
value , 。
replacer , , , , value key val, , value 。
space , 、
code:
(runoob.com)
<span style="color:#0000ff;">var</span> str = {"name":" ", "site":"http://www.runoob.com"<span style="color:#000000;">}
</span><span style="color:#008000;">//</span><span style="color:#008000;">{"name":" ","site":"http://www.runoob.com"}</span>
str_pretty1 =<span style="color:#000000;"> JSON.stringify(str)
document.write( </span>" :"<span style="color:#000000;"> );
document.write( </span>"<br>"<span style="color:#000000;"> );
document.write(</span>"<pre>" + str_pretty1 + "</pre>"<span style="color:#000000;"> );
document.write( </span>"<br>"<span style="color:#000000;"> );
</span><span style="color:#008000;">//</span><span style="color:#008000;">9</span>
str_pretty2 = JSON.stringify(str, <span style="color:#0000ff;">function</span>(){<span style="color:#0000ff;">return</span> 9;}, 4) <span style="color:#008000;">//</span><span style="color:#008000;"> </span>
document.write( " :"<span style="color:#000000;"> );
document.write( </span>"<br>"<span style="color:#000000;"> );
document.write(</span>"<pre>" + str_pretty2 + "</pre>" ); <span style="color:#008000;">//</span><span style="color:#008000;"> pre </span>
転載先:https://www.cnblogs.com/liuyinlei/p/6101674.html