標籤:
我們在使用JavaScript對象的時候,除了一些瀏覽器內建的單體對象可以直接使用外,都會new一個出來使用。
1、new
var obj = new Object();
此時的new關鍵字幹了最有用的一件事、繼承所有Object.prototype上的方法( 一切對象皆繼承於Object )
2、new過程中發生了什麼?
1)、建立一個對象
2)、將建構函式的範圍賦給新對象(因此this就指向了新對象(obj))
3)、執行建構函式中的代碼(為新的對象添加屬性)
4)、返回新對象
var arr = [1,2,3,4];arr.a = 12;arr.show = function(){ alert(this.a);}arr.show();
var obj = new Object(); obj.name = "ntsc"; obj.qq = "785537837"; obj.showName = function(){ alert("我的名字叫:"+ this.name);};obj.showQQ = function(){ alert("我的QQ號:"+ this.qq);建立};console.dir(Object);console.dir(obj);
function createPerson(name, QQ) { // 建構函式 // 建立一個空白對象(原料) var obj = new Object(); // 加屬性和方法(加工) obj.name = name; obj.qq = QQ; obj.showName = function () { console.log("我的名字叫:" + this.name); }; obj.showQQ = function () { console.log("我的QQ號:" + this.qq); }; // 對象返回(出廠) return obj;}
var obj = createPerson("ntsc", "123456");
function CreatePerson(name, QQ) { // 在建構函式裡面增加屬性 this.name = name; this.qq = QQ;}CreatePerson.prototype.showName = function () { // 在原型裡面增加方法(一樣的東西放入"原型"裡面) console.log("我的名字叫:" + this.name);};CreatePerson.prototype.showQQ = function () { console.log("我的QQ號:" + this.qq);};ar obj = new CreatePerson("ntsc", "123465")
function Obj(){ this.a = "123"; this.b = function(){ alert("b"); }}Obj.prototype.c = function(){ alert("c");}var obj = new Obj();
物件導向:在不瞭解原理的情況下、使用其功能。只關注對象的功能、不去關注其內部細節(一種通用思想)
對象:是由"屬性" 和 "方法"構建的
變數(自由的、不屬於任何事物) 和 屬性(屬於某一個特定對象)本質上是一個東西
函數(自由的、不屬於任何事物) 和 方法(屬於某一個特定對象)本質上是一個東西
Object:一切對象他爹(很純很乾淨、一切對象皆繼承於他)
this:
1、this是誰和函數在哪裡定義和哪裡執行沒有關係
2、當前的方法屬於誰、this就是誰(看函數前面的點"."、有點的話前面是誰、this就是誰)、沒有電、this為window
3、給函數綁定事件、對於的this就是當前被綁定事件的元素
4、自執行函數、this永遠都是window
對象執行個體化:人類(對象) --- 小明(執行個體化) --- 具體到個體
註:如果建構函式不需要參數,可以省去括弧,即:new Obj() 和 new Obj是等同的。
JavaScript new 一個建構函式