物件建立 建構函式 原型鏈 例項(的坑)
阿新 • • 發佈:2019-02-09
物件建立
//第一種 沒女朋友new一個 var girl = new Object(); girl.name = "dada"; girl.age = 18; girl.sayhello = function(){ alert('hello!'); } //第二種 直接幹 var gf = { name:'dada', sayhello:function(){ alert('hello!'); } } //工廠模式吧 function create(name, age) { var o = new Object(); o.name = name; o.age = age; o.sayhello = function(){ alert('hello!'); } return o; } var girl = create('dada','18'); //構造 函式 function Gz(name,age){ this.name = name; this.age = age; this.sayhello = function(){ alert('hello!'); } } var girl = new Gz('dada',18); //常用混合方式 構造加原型,後面講原因 function Gz(name,age){ this.name = name; this.age = age; } GZ.prototype.sayhello = function(){ alert('hello!'); } var girl = new Gz('dada',18);
建構函式
和函式的形式上差不多,但函式名要大寫,這樣別人才知道這是建構函式。作用:例項化用,或被其他建構函式引用。
function Person(){} //建構函式
var p=new Person(); //例項化
原型物件模式
function Gz(){ Gz.prototype.name = 'dada'; Gf.prototype.age = 18; Gz.prototype.sayhello = function() { alert('hello!'); } } var girl1 = new Gz(); var girl2 = new Gz();
girl1 和 girl2 訪問的同一個屬性和方法。當然prorotype是Gz的一個屬性,也是它開闢的新空間吧!在這個空間中存在另一個屬性constructor又回去指向了Gz. 有點繞口。
坑在這:例項 沒有prototype屬性 但有constructor屬性(同上), 也有__proto__屬性,一般指向建構函式。
有個圖能顯示,看的別人的 連結在這 也有關於繼承的
建構函式和原型組合模式
建構函式定義物件的屬性,原型定義共享的屬性和方法。上面有例子