1. 程式人生 > >深入理解ES6之物件

深入理解ES6之物件

一:物件的屬性

1:屬性速記法

//之前
function createPerson(name,age){
  return {
     name:name,
     age:age
  }
}
var person = {
    name="hahah",
    sayName:function(){
 }
}

//ES6
function createPerson(name,age){
  return {
     name,
     age
  }
}
var person = {
    name="hahah",
    sayName(){
 }
}

2:屬性可以通過.或者[]引用內部屬性


[]方括號允許你將變數或者字串字面量指定為屬性名

var person = {};
var lastName = "last name";
console.log(person[lastName]);

3:重複屬性覆蓋,後一個會覆蓋前一個同名屬性
4:屬性列舉時定義了規則
所有的數字型別鍵,按照升序排列;所有的字串型別鍵,按照新增到物件的順序排列;所有的符號型別,按照新增到物件的順序排列;

var obj={
a:1,
0:1,
c:1,
2:1,
b:1,
1:1
}
obj.d=1;
console.log(Object.getOwnPropertyNames(obj).join
(""));//"012acbd"

二:物件的方法

1:方法定義

let person ={
//方法
getGreeting(){
   return "hello"
}

//並非方法
function shareGreeting(){
    return "Hi";
 }
}
//方法裡面可以使用super 非方法不能使用super

2:新增方法
Object.is()比較兩個物件值是否相等;
Object.assign()混入用於一個物件從另一個物件中接收屬性方法,但是並未在在接收者上建立訪問器屬性,供應者擁有訪問器屬性。

三:原型與super

1:原型可以改變
ES6通過新增Object.setPortotypeOf()方法可以執行修改任意指定物件的原型。

let person = {
  getGreeting(){
    return "hello"
  }
}
let dog = {
  getGreeting(){
    return "woof"
  }
}

let friend = Object.create(person);
console.log(friend.getGreeting())// "hello"

Object.setPrototypeOf(friend,dog);
console.log(friend.getGreeting())// "woof"
console.log(Object.getPrototypeOf(friend)===dog); // true

2:super關鍵字
super關鍵字可以呼叫原型上面的方法,所呼叫的方法會被設定好內部的this繫結,以自動使用this值來進行工作。

相關推薦

深入理解ES6物件

一:物件的屬性 1:屬性速記法: //之前 function createPerson(name,age){ return { name:name, age:age

深入理解ES6》——物件解構和陣列解構

為何使用解構功能     在ES5及早期版本中,開發者們為了從物件和陣列中獲取特定資料並賦值給變數,編寫了許多看起來同質化的程式碼,如下: let options = { repeat:true, save:false }; //從物件中取資料 let r

深入理解JVM物件訪問定位

當我們建立完成物件之後要使用物件,那麼我們如何找到這個物件呢?這就用到本文所講述的物件訪問定位。 建立物件是為了使用資料,我們的Java程式需要通過棧上的reference資料來操作堆上的具體物件。由於reference型別在Java虛擬機器規範中只規定了一個指向物件的引用

深入理解ES6迭代器與生成器

迭代器 迭代器 iterator,在 Javascript 中,迭代器是一個物件(也可稱作為迭代器物件),它提供了一個 next() 方法,用來返回迭代序列中的下一項。 next 方法的定義,next 方法是一個函式,執行後返回一個物件包含兩個屬性:{ done: [boolean]

深入理解ES6var,let,const區別

第一:塊級範圍內 var變數提升(不存在以下問題) let塊級作用域,指定塊的外部無法訪問 const常量宣告塊級作用域,不會發生變數提升,聲明後不可以改變因此需要初始化.(對於一個物件而言不可改變是指引用不可變,內容可以改變相當於java的final

深入理解ES6函式

一:關於函式的引數: 可以接受任意數量的引數而無視函式宣告的引數數量是js函式的獨特之處。 1:引數預設值 ES6之前做法: function makeRequest(url,timeout,callback){ timeout=tim

深入理解ES6——代理和反射(proxy)

通過呼叫new proxy()你可以建立一個代理來替代另一個物件(被稱為目標),這個代理對目標物件進行了虛擬,因此該代理與該目標物件表面上可以被當做同一個物件來對待。 建立一個簡單的代理 當你使用Proxy構造器來建立一個代理時,需要傳遞兩個引數:目標物件以及一個處理器,後者是定義了一個或多個陷阱函式的物件。

深入理解ES6解構

nbsp span 對象 code true 上下文 div 嵌套對象 賦值 結構是一種打破數據解構,將其拆分為更小部分的過程。 對象解構   對象字面量的語法形式是在一個賦值操作符左邊放置一個對象字面量。 let node={ type:"indefi

深入理解JVM探索物件結構

我們都知道現在高階語言都是面向物件思想,不管是用例項化建立物件還是使用工廠生產例項,你真的瞭解你的物件嗎?之前的博文中已經介紹過物件的建立了,大家可以自己去翻看,我們這篇博文就簡單介紹一下我們的物件,看看它的結構是怎樣的。 首先從以下三部分展開,物件頭(Header),例項

深入理解ES6 ---物件(object)

前言 在JavaScript中幾乎每一個值都是某種特定的物件 ,例如數字是屬於Number 型別的物件,字串是String 型別的物件.可見物件在JavaScript中的重要性,而在ES6中著重通過多種方式加強物件的使用,通過簡單的而語法擴充套件,提供更多操作

深入理解javascript設計模式

rip 是我 解決問題 不想 接受 button move center 常識 設計模式 設計模式是命名、抽象和識別對可重用的面向對象設計實用的的通用設計結構。設計模式確定類和他們的實體、他們的角色和協作、還有他們的責任分配。 每個設計模式都聚焦於一個面向對象的設計難題

深入理解javascript原型

undefine tor ace 對象實例 高級 code turn 三方 true 理解原型 原型是一個對象。其它對象能夠通過它實現屬性繼承。不論什麽一個對象都能夠成為繼承,全部對象在默認的情況下都有一個原型。由於原型本身也是對象,所以每一個原型自身又有一個原型

深入理解Java線程池

我們 先進先出 tor cor null 討論 等於 影響 log 重要連接:http://www.cnblogs.com/dolphin0520/p/3958019.html 出處:http://www.cnblogs.com/dolphin0520/     本文歸作者

深入理解JVMJVM內存區域與內存分配

錯誤 銷毀 構造方法 初學 不存在 data 空閑 table fin 深入理解JVM之JVM內存區域與內存分配   在學習jvm的內存分配的時候,看到的這篇博客,該博客對jvm的內存分配總結的很好,同時也利用jvm的內存模型解釋了java程序中有關參數傳遞的問題。  

深入理解ES6箭頭函數中的this

執行上下文 很多 pre 深入 上下 ber out pri 而不是 簡要介紹:箭頭函數中的this,指向與一般function定義的函數不同,箭頭函數this的定義:箭頭函數中的this是在定義函數的時候綁定,而不是在執行函數的時候綁定。 (1)一般函數this指向在執行

深入理解ES6 - var-let-const

sting fun ret 全局 key 聲明 mas 剛才 syn 知識點 var 聲明變量: 1、存在變量提升,實際上var無論在哪裏聲明,都會被當做當前的作用域頂部聲明變量。 2、可以重復聲明,後聲明的變量會覆蓋前聲明的變量。 let 聲明變量: 1、不存在變量提升。

深入理解SpringCloudEureka註冊過程分析

.net then media inject seq tar view inf cas   eureka是一種去中心化的服務治理應用,其顯著特點是既可以作為服務端又可以作為服務向自己配置的地址進行註冊。那麽這篇文章就來探討一下eureka的註冊流程。 一、Eureka的服

深入理解系列 float

子元素 out oat 理解 oom 20px 布局 空格 ble float的設計初衷: 僅僅是為了實現文字環繞效果 float的感性認知: 包裹性: 收縮:元素應用了float後,寬度收縮,緊緊地包裹住內容(即元素的寬度收縮到元素內的內容的寬度大小 堅挺:原來沒有高

深入理解python二——python列表和元組

n) 數據 兩種 性能 執行 效率 動態 單元 這一 從一開始學習python的時候,很多人就聽到的是元組和列表差不多,區別就是元組不可以改變,列表可以改變。 從數據結構來說,這兩者都應當屬於數組,元組屬於靜態的數組,而列表屬於動態數組。稍後再內存的分配上也會體現這一點。對

深入理解分散式抉擇分散式鎖

  引言 為什麼寫這篇文章? 目前網上大部分的基於zookeeper,和redis的分散式鎖的文章都不夠全面。要麼就是特意避開叢集的情況,要麼就是考慮不全,讀者看著還是一臉迷茫。坦白說,這種老題材,很難寫出新創意,博主內心戰戰兢兢,如履薄冰,文中有什麼不嚴謹之處,歡迎批評