日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php object keys_原生js中Object.keys方法详解

發布時間:2024/7/23 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php object keys_原生js中Object.keys方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實際開發中,有時需要知道對象的所有屬性,原生js提供了一個方法Object.keys()。

Object.keys(obj)返回的是一個數組,該數組的所有元素都是字符串。這些元素是來自于給定的obj可直接枚舉的屬性,這些屬性的順序與手動遍歷該對象屬性時的一致。

一. 傳入數組:返回索引

var arr = ["a", "b", "c"];

console.log(Object.keys(arr)); // console: ["0", "1", "2"]

二. 傳入對象:返回屬性名

var obj = {'a':'123','b':'345'};

console.log(Object.keys(obj)); //['a','b']

var obj1 = { 100: "a", 2: "b", 7: "c"};

console.log(Object.keys(obj1)); // console: ["2", "7", "100"]

var obj2 = Object.create(

{},

{

getFoo : {

value : function () { return this.foo }

}

}

);

obj2.foo = 1;

console.log(Object.keys(obj2)); // console: ["foo"]

三.傳入字符串:返回索引

var str = 'ab1234';

console.log(Object.keys(str)); // ["0","1","2","3","4","5"]

四、構造函數:返回空數組或者屬性名

function Pasta(name, age, gender) {

this.name = name;

this.age = age;

this.gender = gender;

this.toString = function () {

return (this.name + ", " + this.age + ", " + this.gender);

}

}

console.log(Object.keys(Pasta)); //console: []

var spaghetti = new Pasta("Tom", 20, "male");

console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]

五、注意事項

在ES5里,如果此方法的參數不是對象(而是一個原始值),那么它會拋出 TypeError。在ES6中,非對象的參數將被強制轉換為一個對象。

Object.keys("foo");

// TypeError: "foo" is not an object (ES5 code)

Object.keys("foo");

// ["0", "1", "2"] (ES2015 code)

六、要在原生不支持的就環境中添加兼容的Object.keys(),可以添加以下腳本:

if (!Object.keys) {

Object.keys = (function () {

var hasOwnProperty = Object.prototype.hasOwnProperty,

hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),

dontEnums = [

'toString',

'toLocaleString',

'valueOf',

'hasOwnProperty',

'isPrototypeOf',

'propertyIsEnumerable',

'constructor'

],

dontEnumsLength = dontEnums.length;

return function (obj) {

if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');

var result = [];

for (var prop in obj) {

if (hasOwnProperty.call(obj, prop)) result.push(prop);

}

if (hasDontEnumBug) {

for (var i=0; i < dontEnumsLength; i++) {

if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);

}

}

return result;

}

})()

};

總結

以上是生活随笔為你收集整理的php object keys_原生js中Object.keys方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。