獲取js物件所有方法

2021-09-19 19:04:41 字數 2238 閱讀 1253

1、物件內建屬性方法:object.keys();該方法返回乙個陣列,陣列內包括物件內可列舉屬性以及方法名稱。陣列中屬性名的排列順序和使用for...in遍歷該物件時返回的順序一致。

// 通過呼叫object.keys()方法,獲取物件上已定義(可列舉)的屬性和方法

var keys= object.keys(testobj);

console.log(keys); // 輸出 keys ["name", "age", "action"]

注意:在es5裡,如果此方法的引數不是物件(而是乙個原始值),那麼它會丟擲 typeerror。而在es2015中,非物件的引數將被強制轉換為乙個物件。

object.keys("testobj");

// typeerror: "testobj" is not an object (es5 code)

object.keys("testobj");

//["name", "age", "action"] (es2015 code)

2、object.getownpropertynames():方法返回乙個指定物件所有自身屬性的屬性名(包括不可列舉屬性但不包括symbol值作為名稱的屬性)組成的陣列

該陣列是obj自身擁有的列舉或不可列舉屬性名稱字串集合。 陣列中列舉屬性的順序與通過for...in迴圈(或object.keys())迭代該物件屬性時一致。陣列中不可列舉屬性的順序未定義。

var keys = object.getownpropertynames(testobj);

console.log(keys);  // 輸出 keys ["name", "age", "action"]

3、當然除了以上兩個外,還有最原始的for...in迴圈(估計是平時迴圈用的多了,反倒是這個不怎麼用!)

var keys =;

for(var i in testobj)

console.log(keys); // keys ["name", "age", "action"]

下面通過乙個例項,直觀說明三者之間的區別:

var testobj = object.create({}, ,

enumerable: false

}});testobj.name = "shangguan";

testobj.age = 25;

testobj.action = function();

function getkeys()

//返回直接定義在該物件上的可列舉屬性,非繼承。通過hasownproperty()方法可以將那些屬性是物件自身(非繼承)屬性篩選出來,從而將不可列舉屬性排除出去

prop要檢測的屬性,字串 名稱或者 symbol。 返回值:用來判斷某個物件是否含有指定的屬性 的boolean值

for (var i in testobj) //輸出 name,age,action}}

總結:如果只需要獲取可列舉屬性,那麼object.keys()for...in迴圈迭代即可(object.getownpropertynames()也可以獲取到原型鏈上的可列舉屬性,不過需要通過hasownproperty()方法過濾掉不可列舉屬性)。

js陣列的所有方法

修改器方法 下面的這些方法會改變呼叫它們的物件自身的值 array.prototype.copywithin 在陣列內部,將一段元素序列拷貝到另一段元素序列上,覆蓋原有的值。array.prototype.fill 將陣列中指定區間的所有元素的值,都替換成某個固定的值。array.prototype...

python 列表物件的所有方法

記錄下,很容易忘記 list.extend l 將乙個給定列表中的所有元素都新增到另乙個列表中,相當於 a len a l list.remove x 刪除列表中值為 x 的第乙個元素。如果沒有這樣的元素,就會返回乙個錯誤。list.pop i 從列表的指定位置刪除元素,並將其返回。如果沒有指定索引...

String所有方法

char charat int index 返回指定索引處的 char 值。int compareto object o 把這個字串和另乙個物件比較。int compareto string anotherstring 按字典順序比較兩個字串。int comparetoignorecase stri...