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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Object对象

發(fā)布時(shí)間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Object对象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址:https://wangdoc.com/javascript/
JavaScript原生提供Object對(duì)象。JavaScript的所有其他對(duì)象都繼承自Object對(duì)象,即都是Object的實(shí)例。Object對(duì)象的原生方法分為兩類:Object本身的方法與Object的實(shí)例方法。
Object對(duì)象本身的方法
所謂本身的方法就是直接定義在Object對(duì)象的方法。

Object.print = function (o) {console.log(o); };

上面代碼中,print就是直接定義在Object對(duì)象上。
Object的實(shí)例方法
所謂實(shí)例方法就是定義在Object原型對(duì)象Object.prototype上的方法。它可以被Object實(shí)例直接使用。

Object.prototype.print = function() {console.log(this); }; var obj = new Object(); obj.print() //Object

上面代碼中,Object.prototype定義了一個(gè)print方法,然后生成一個(gè)Object的實(shí)例obj。obj直接繼承了Object.prototype的屬性和方法,可以直接使用obj.print調(diào)用print方法。也就是說,obj對(duì)象的print方法實(shí)質(zhì)上就是調(diào)用Object.prototype.print方法。

Object()

Object本身是一個(gè)函數(shù),可以當(dāng)作工具方法使用,將任意值轉(zhuǎn)為對(duì)象。這個(gè)方法常用于保證某個(gè)值一定是對(duì)象。
如果參數(shù)為空(或者為undefined和null),Object()返回一個(gè)空對(duì)象。
instanceof運(yùn)算符用來驗(yàn)證,一個(gè)對(duì)象是否為指定的構(gòu)造函數(shù)的實(shí)例。obj instanceof Object返回true,就表示obj對(duì)象是Object的實(shí)例。

var obj = Object(1); obj instanceof Object; // true obj instanceof Number; // truevar obj = Object("foo"); obj instanceof Object; // true obj instanceof String; // truevar obj = Object(true); obj instanceof Object; // true obj instanceof Boolean; // true

上面代碼中,Object函數(shù)的參數(shù)是各種原始類型的值,轉(zhuǎn)換成對(duì)象就是原始類型值對(duì)應(yīng)的包裝對(duì)象。
如果Object方法的參數(shù)是一個(gè)對(duì)象,它總是返回該對(duì)象,即不用轉(zhuǎn)換。

var arr = []; var obj = Object(arr); // 返回原數(shù)組 obj === arr // true

利用這一點(diǎn),可以寫一個(gè)判斷變量是否為對(duì)象的函數(shù)。

function isObject(value) {return value === Object(value); }

Object構(gòu)造函數(shù)

Object不僅可以當(dāng)作工具函數(shù)使用,還可以當(dāng)作構(gòu)造函數(shù)使用,即前面可以使用new命令。Object構(gòu)造函數(shù)的首要用途是直接用它來生成新對(duì)象。
Object構(gòu)造函數(shù)的用法與工具方法很相似,幾乎一模一樣。使用時(shí),可以接受一個(gè)參數(shù),如果該參數(shù)是一個(gè)對(duì)象,則直接返回這個(gè)對(duì)象;如果是一個(gè)原始類型的值,則返回該值對(duì)應(yīng)的包裝對(duì)象。
雖然很相似,但是Object(value)new Object(value)兩者的語義是不同的,Object(value)表示將value轉(zhuǎn)成一個(gè)對(duì)象,new Object(value)則表示新生成一個(gè)對(duì)象,它的值是value。

Object的靜態(tài)方法

所謂靜態(tài)方法,是指部署在Object(value)對(duì)象自身的方法。

Object.keys(),Object.getOwnPropertyNames()

Object.keys方法和Object.getOwnPropertyNames方法都用來遍歷對(duì)象的屬性。Object.keys方法的參數(shù)是一個(gè)對(duì)象,返回一個(gè)數(shù)組。該數(shù)組的成員都是該對(duì)象自身的(而不是繼承的)所有屬性名。
Object.getOwnPropertyNames方法和Object.keys類似,也是接受一個(gè)對(duì)象作為參數(shù),返回一個(gè)數(shù)組,包含了該對(duì)象自身的所有屬性名。
對(duì)于一般的對(duì)象來說Object.keys()Object.getOwnPropertyNames()返回的結(jié)果都一樣。只有涉及不可枚舉屬性是,才會(huì)有不一樣的結(jié)果。Object.keys方法只返回可枚舉的屬性,Object.getOwnPropertyNames方法還返回不可枚舉的屬性名。

var a = ["hello", "world"]; Object.keys(a) // ["0", "1"] Object.getOwnPropertyNames(a) // ["0", "1", "length"]

其他方法

除了上面提到的兩個(gè)方法,Object還有不少其他靜態(tài)方法。
(1)對(duì)象屬性模型的相關(guān)方法

  • Object.getOwnPropertyDescriptor():獲取某個(gè)屬性的描述對(duì)象。
  • Object.defineProperty():通過描述對(duì)象,定義某個(gè)屬性。
  • Object.defineProperties():通過描述對(duì)象,定義多個(gè)屬性。
    (2)控制對(duì)象狀態(tài)的方法
  • Object.preventExtensions():防止對(duì)象擴(kuò)展。
  • Object.isExtensible():判斷對(duì)象是否可擴(kuò)展。
  • Object.seal():禁止對(duì)象配置。
  • Object.isSealed():判斷一個(gè)對(duì)象是否可配置。
  • Object.freeze():凍結(jié)一個(gè)對(duì)象。
  • Object.isFrozen():判斷一個(gè)對(duì)象是否被凍結(jié)。
    (3)原型鏈相關(guān)方法
  • Object.create():該方法可以指定原型對(duì)象和屬性,返回一個(gè)新的對(duì)象。
  • Object.getPropertyOf():獲取對(duì)象的Prototype對(duì)象。

    Object的實(shí)例方法

    除了靜態(tài)方法,還有不少方法定義在Object.prototype對(duì)象。它們稱為實(shí)例方法,所有Object的實(shí)例對(duì)象都繼承了這些方法。
    Object實(shí)例對(duì)象的方法,主要有以下六個(gè)。
  • Object.prototype.valueOf():返回當(dāng)前對(duì)象對(duì)應(yīng)的值。
  • Object.prototype.toString():返回當(dāng)前對(duì)象對(duì)應(yīng)的字符串形式。
  • Object.prototype.toLocaleString():返回當(dāng)前對(duì)象對(duì)應(yīng)的本地字符串形式。
  • Object.prototype.hasOwnProperty():判斷某個(gè)屬性是否為當(dāng)前對(duì)象自身的屬性,還是繼承自原型對(duì)象的屬性。
  • Object.prototype.isPrototypeOf():判斷當(dāng)前對(duì)象是否為另一個(gè)對(duì)象的原型。
  • Object.prototype.propertyIsEnumerable():判斷某個(gè)屬性是否可枚舉。

    Object.prototype.valueOf()

    valueOf方法的作用是返回一個(gè)對(duì)象的值,默認(rèn)情況下返回對(duì)象本身。

    Object.prototype.toString()

    toString方法的作用是返回一個(gè)對(duì)象的字符串形式,默認(rèn)情況下返回類型字符串。
var o1 = new Object(); o1.toString() // "[object Object]"

上面代碼會(huì)返回字符串[object Object],該字符串說明對(duì)象的類型。
字符串[object Object]本身沒有太大的用處,但是通過自定義toString方法,可以讓對(duì)象在自動(dòng)類型轉(zhuǎn)換是,得到想要的字符串形式。
數(shù)組、字符串、函數(shù)、Date對(duì)象分別部署了自定義的toString方法,覆蓋了Object.prototype.toString方法。

toString()的應(yīng)用:判斷數(shù)據(jù)類型

Object.prototype.toString方法返回對(duì)象的類型字符串,因此可以用來判斷一個(gè)值得類型。上面空對(duì)象調(diào)用toString返回的字符串object Object,其中第二個(gè)Object表示該值的構(gòu)造函數(shù)。
由于實(shí)例對(duì)象可能會(huì)自定義toString方法,覆蓋掉Object.prototype.toString方法,所以為了得到類型字符串,最好直接使用Object.prototype.toString方法。通過函數(shù)的call方法調(diào)用。

  • 數(shù)值:返回[object Number]。
  • 字符串:返回[object String]
    ...
    利用這個(gè)特性,可以寫出一個(gè)比typeof運(yùn)算符更準(zhǔn)確的類型判斷函數(shù)。
var type = function(o) {var s = Object.prototype.toString.call(o);return s.match(/\[object (.*?)\]/)[1].toLowerCase(); }

Object.prototype.toLocaleString()

Object.prototype.toLocaleString方法與toString返回結(jié)果相同,也是返回一個(gè)值得字符串形式。這個(gè)方法的主要作用是留出一個(gè)接口,讓各種不同的對(duì)象實(shí)現(xiàn)自己版本的toLocaleString,用來返回針對(duì)某些地域的特定的值。
目前主要有三個(gè)對(duì)象自定義了toLocaleString方法。

  • Array.prototype.toLocaleString()
  • Number.prototype.toLocaleString()
  • Date.prototype.toLocaleString()
    舉例來說,日期的實(shí)例對(duì)象的toStringtoLocaleString返回值就不一樣,而且toLocaleString的返回值跟用戶設(shè)定的所在地域有關(guān)。

    Object.prototype.hasOwnProperty()

    Object.prototype.hasOwnProperty方法接受一個(gè)字符串作為參數(shù),返回一個(gè)布爾值,表示該實(shí)例對(duì)象自身是否有該屬性。
var obj = {p: "123", };obj.hasOwnProperty("p"); // true obj.hasOwnProperty("toString"); // false

上面代碼中,對(duì)象obj自身具有p屬性。toString屬性是繼承來的。

轉(zhuǎn)載于:https://www.cnblogs.com/chris-jichen/p/10043589.html

總結(jié)

以上是生活随笔為你收集整理的Object对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。