学习篇之函数就是对象

    var person = new Object();
            person.name = "bob";
            person.age = 34;
            person.job = "Software";

            person.sayName = function(){
                alert(this.name);
        }

        // 对象字面量写法
        var person = {
            name:"zhs",
            age:32,
            job:"Software",
            sayName:function(){
                alert(this.name);
            }
        }
        
        // 工厂模式
        function creatPerson(name,age,job){
            var o = new Object();
            o.name = name;
            o.age = age;
            o.sayName = function(){
                return this.name
            }
            return o;
        }
        var p1 = new creatPerson("bob","220","清洁工");
        console.log(p1);
        
        // 构造函数模式 (有点 可以判断对象类型)
        function Person(name,age,obj){
            this.name = name;
            this.age = age;
            this.obj = obj;
            this.sayName = function(){
                // alert(this.name);
            }
        }
        var pa1 = new Person("sos",44,"软件工程师");
        var pa2 = new Person("ccc",22,"软件工程师");
        console.log(pa2.constructor == Person); // true 检测对象类型
        console.log(pa2 instanceof Person) // true
        var o = new Object();
        o = pa1;
        Person.call(o,"aaa",55,"sss");
        console.log(o.sayName());

        // 原型模式
        function Ps(){}
        Ps.prototype.name = "asd";
        Ps.prototype.age = 34;
        var ps1 = new Ps();
        console.log(ps1.age); //34

        // hasOwnPrototype() 原型属性返回 false,实例属性返回 true
        // in 包含原型属性返回 true
        var ps2 = new Ps();
        ps2.name = "cacaca";
        console.log(ps2.name);
        console.log(ps2.hasOwnProperty("name")); // true
        console.log("age" in ps2); // true
        

    // 判断原型属性 函数 function hasPrototyperty(object,name){ return !object.hasOwnProperty(name) && (name in object); } var ps3 = new Ps(); ps3.name = "aaac"; // 实例属性 console.log(hasPrototyperty(ps3,"name")); // false

 

posted @ 2016-06-29 15:45  月半字  阅读(170)  评论(0编辑  收藏  举报