1. 程式人生 > >物件建立 建構函式 原型鏈 例項(的坑)

物件建立 建構函式 原型鏈 例項(的坑)

物件建立


        //第一種 沒女朋友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__屬性,一般指向建構函式。

有個圖能顯示,看的別人的     連結在這      也有關於繼承的

建構函式和原型組合模式

建構函式定義物件的屬性,原型定義共享的屬性和方法。上面有例子