成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你了解JavaScript Object 對象

開發 前端
JavaScript 原生提供Object對象(注意起首的O是大寫),介紹該對象原生的各種方法。JavaScript 的所有其他對象都繼承自Object對象,即那些對象都是Object的實例。

一、概念

JavaScript 原生提供Object對象(注意起首的O是大寫),介紹該對象原生的各種方法。JavaScript 的所有其他對象都繼承自Object對象,即那些對象都是Object的實例。

二、Object()

Object本身是一個函數,可以當作工具方法使用,將任意值轉為對象。

這個方法常用于保證某個值一定是對象。如果參數為空(或者為undefined和null),Object()返回一個空對象。

<html>
    <head>
        <title>JavaScript Animation</title>
        <script type="text/javascript">
            var obj = Object();
            // 等同于
            var obj = Object(undefined);
            var obj = Object(null);
            console.log(obj) // true
</script>
    </head>
    <body>
      <p id="dad"></p>
    </body>
</html>

運行效果:

參數是原始類型的值,Object方法將其轉為對應的包裝對象。

var obj = Object(1);
obj instanceof Object// true

Object方法的參數是一個對象,它總是返回該對象,即不用轉換。

<html>
    <head>
        <title>JavaScript Animation</title>
        <script type="text/javascript">
            var obj = Object(1);
            obj instanceof Object 
            console.log(obj) // true
</script>
    </head>
    <body>
       <p id="dad"></p>
    </body>
</html>

利用這一點,可以寫一個判斷變量是否為對象的函數。

function isObject(value) { 
  return value === Object(value);
}
isObject([]) // trueisObject(true) // false

圖片

1. Object 構造函數

Object構造函數的首要用途,是直接通過它來生成新對象。

var obj = new Object();

注:

通過var obj = new Object()的寫法生成新對象,與字面量的寫法var obj = {}是等價的。或者說,后者只是前者的一種簡便寫法。

var o1 = {a: 1};
var o2 = new Object(o1);o1 === o2 // truevar obj = new Object(123);obj instanceof Number // true

注:( 雖然用法相似,但是Object(value)與new Object(value)兩者的語義是不同的。)

Object(value)表示將value轉成一個對象,new Object(value)則表示新生成一個對象,它的值是value。

2. Object 的實例方法

除了靜態方法,還有不少方法定義在Object.prototype對象。它們稱為實例方法。

所有Object的實例對象都繼承了這些方法。

2.1 Object.prototype.valueOf()

valueOf方法的作用是返回一個對象的“值”,默認情況下返回對象本身。

var obj = new Object();
obj.valueOf() === obj // true

例1:

var obj = new Object();
1 + obj // "1[object Object]"

例2:

var obj = new Object();
obj.valueOf = function () {  return 2;};
1 + obj // 3

代碼解析

自定義了obj對象的valueOf方法,于是1 + obj就得到了3。這種方法就相當于用自定義的obj.valueOf,覆蓋Object.prototype.valueOf。

2.2 Object.prototype.toString()

toString方法的作用是返回一個對象的字符串形式,默認情況下返回類型字符串。

var o1 = new Object();
o1.toString() // "[object Object]"var o2 = {a:1};o2.toString() // "[object Object]"

通過自定義toString方法,可以讓對象在自動類型轉換時,得到想要的字符串形式。

var obj = new Object();
obj.toString = function () {  return 'hello';};
obj + ' ' + 'world' // "hello world"

上面代碼表示,當對象用于字符串加法時,會自動調用toString方法。由于自定義了toString方法,所以返回字符串hello world。

數組、字符串、函數、Date 對象都分別部署了自定義的toString方法,覆蓋了Object.prototype.toString方法。

[1, 2, 3].toString() // "1,2,3"
'123'.toString() // "123"
(function () {
  return 123;
}).toString()
// "function () {
//   return 123;
// }"
(new Date()).toString()
// "Tue May 10 2016 09:11:31 GMT+0800 (CST)"

圖片

上面代碼中,數組、字符串、函數、Date 對象調用toString方法,并不會返回[object Object],因為它們都自定義了toString方法,覆蓋原始方法。

2.3 Objct.prototype.toLocaleString()

Object.prototype.toLocaleString方法與toString的返回結果相同,也是返回一個值的字符串形式。

var obj = {};
obj.toString(obj) // "[object Object]"
obj.toLocaleString(obj) // "[object Object]"

這個方法的主要作用是留出一個接口,讓各種不同的對象實現自己版本的toLocaleString,用來返回針對某些地域的特定的值。

var person = {
  toString: function () {
    return 'Henry Norman Bethune';
  },
  toLocaleString: function () {
    return '白求恩';
  }
};
person.toString() // Henry Norman Bethune
person.toLocaleString() // 白求恩

日期的實例對象的toString和toLocaleString返回值就不一樣,而且toLocaleString的返回值跟用戶設定的所在地域相關。

var date = new Date();date.toString() // "Tue Jan 01 2018 12:01:33 GMT+0800 (CST)"date.toLocaleString() // "1/01/2018, 12:01:33 PM"

圖片

三、總結

本文基于JavaScript基礎,主要介紹Object 對象,常見的構造函數,Object 的實例方法,都通過案例的分析進行詳細講解。通過運行效果圖展示,能夠更好的幫助讀者去理解。

歡迎大家積極嘗試,有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

代碼很簡單,希望對你學習有幫助。

責任編輯:華軒 來源: 前端進階學習交流
相關推薦

2021-07-02 10:00:50

JavaScriptObject 函數

2024-07-02 14:14:18

2020-10-22 09:08:34

JavaScript

2023-05-30 15:06:21

JavaScript屬性開發

2023-07-06 14:40:38

2023-07-25 16:06:57

JavaScript對象

2023-08-27 15:18:17

JavaScriptRegExp

2023-09-06 14:57:46

JavaScript編程語言

2021-05-18 08:30:42

JavaScript 前端JavaScript時

2021-06-24 09:05:08

JavaScript日期前端

2021-01-26 23:46:32

JavaScript數據結構前端

2021-03-05 18:04:15

JavaScript循環代碼

2021-03-09 14:04:01

JavaScriptCookie數據

2024-04-19 14:23:52

SwitchJavaScript開發

2023-07-30 15:18:54

JavaScript屬性

2024-01-30 13:47:45

2020-11-10 10:48:10

JavaScript屬性對象

2021-06-04 09:56:01

JavaScript 前端switch

2021-01-29 18:41:16

JavaScript函數語法

2021-02-02 18:39:05

JavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精久久久| 欧美激情一区二区 | 国产精品一区二区在线播放 | 99久久婷婷国产精品综合 | 91精品久久久久久久久中文字幕 | 国产精品久久久久久久白浊 | 性福视频在线观看 | 国产成人综合亚洲欧美94在线 | 在线观看免费av网 | 久久av网| 欧美精品99 | 国产精品久久国产精品久久 | 欧美一区二区视频 | 黄色精品视频网站 | 日本成人久久 | 国产精品不卡视频 | 巨大荫蒂视频欧美另类大 | 欧美在线一区二区三区 | 欧美精品一区二区在线观看 | 亚洲精品在线视频 | 国产99视频精品免费视频7 | 欧美日韩精品专区 | 狠狠色综合欧美激情 | 精品国产一区二区三区久久 | 日日骚网 | 日韩成人精品 | 久久网站免费视频 | 国产色| 亚洲视频在线一区 | 精品亚洲一区二区三区四区五区高 | 日韩精品一区二区三区在线播放 | 日韩三片 | 99一级毛片 | 99亚洲精品 | 国产成人精品一区二区三区四区 | 久久久无码精品亚洲日韩按摩 | 久久久精品一区 | 国产日韩欧美激情 | 九色av| 久久久久网站 | 狠狠骚|