js 對象與json的區別和this 指向問題

來源:互聯網
上載者:User

標籤:調用   資料   var   操作符   out   sync   undefined   類型   ext   

建構函式。用來被new關鍵字調用的函數,這個函數返回指定屬性的對象。
用new關鍵字來調用函數
new是是一個操作符,使用new操作符調用函數的時候,此時將會發生4個事情:
(1)建立一個Null 物件
(2)把函數內部的this指向這個Null 物件
(3)將順序函數執行裡面的語句
(4)返回這個對象
function fun(){
name : "小花" ,
age : 18 ,
sex : "女",
}
var xiaoming = new fun();
console.log(xiaoming);
//fun {name: "小花", age: 18, sex: "女"}
javascript基礎之對象
對象只是帶有屬性和方法的特殊資料類型
javaScript 有內建對象比如 String、Date、Array 等等。
1:用字面量的方式建立,使用{}當做界定符號,裡面用k-v對兒羅列所有屬性
var obj = {
name : "小花" ,
age : 18 ,
sex : "女",
sayHello : function(){
console.log("我是" + this.name);
}
}
對象就是屬性的無序集合
2:訪問對象的屬性
objectName.propertyName
objectName["propertyName"]
訪問對象的方法
objectName.methodName()
var obj = {
name : "小花" ,
age : 18 ,
sex : "女",
sayHello : function(){
console.log("我是" + this.name);
}
}
console.log(obj.name);
console.log(obj[‘name‘]);
console.log(obj.sayHello);
console.log(obj[‘sayHello‘]);
console.log(obj.sayHello());
//小花
//小花
//函數
//函數
//我是小花
3:對象的字面量和JSON的關係
JSON沒有聲明變數這一說(JSON中沒有變數的概念)
JSON末尾沒有分號{}後面
JSON要求所有的鍵必須有雙引號(單引號不行),而對象字面量不要求(當鍵的名字不符合標識符名字的時候必須加上雙引號,英語字母、數字、_、$ ,不以數字開頭)。
4:this
關鍵字
指向的是調用函數的那個對象
和調用有關和定義無關
(1)當用()調用的時候,指向的是window
function myfunction(){
console.log(this);
}
myfunction();
//Window {external: Object, chrome: Object, document: document, _ASYNC_START: 1500782356654, _chrome_37_fix: undefined…}
(2)dom元素事件處理常式的時候,指向的是dom對象
function myfunction(){
console.log(this);
}
div.onclick=myfunction;
//div
(3)當函數被setInterval、setTimeout調用的時候,函數裡面的this是window對象
setInterval(myfunction,2000);
(4)當函數被當做某個對象屬性被調用的時候,此時這個函數裡面的this指的是這個對象
var obj = {
name : "小花" ,
age : 18 ,
sex : "女",
sayHello : function(){
console.log("我是" + this.name);
}
}
obj.sayHello();
(5)call和apply方法可以任意設定函數裡面的this
函數.call(對象);
函數.apply(對象);
函數立即執行,且函數內部的this指向對象。
區別是傳參:
sum.call(obj,1,2,3); // call必須要用逗號羅列所有參數
sum.apply(obj , [1,2,3]); // apply用數組羅列所有參數
(6)new 調用的函數。
this指的是系統內部建立的新對象

js 對象與json的區別和this 指向問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.