创建对象的方法(经典)

<script type="text/javascript">
    //1.创建对象的一种方式
    var obj = Object.create(new Object());
    console.log(obj) //其实 obj = {}
    obj.name = 25; //加属性
    obj.fn = function() { //加方法
        return 20;
    }
    console.log(obj) //等价 {name: 25, fn: ƒ}
    //总结:使用Object.create()是将对象继承到__proto__属性上,没有继承任何原型方法,也就是说它的原型链没有上一层。
    //Object.create(null)造出来的object是没有任何属性的
    //2.创建对象的方式
    var obj1 = new Object();
    console.log(obj1);
    obj1.age = 12;
    obj1.fn = function() {
        console.log("这样子添加方法也是可行的")
        return 30;
    }
    console.log(obj1);
    //3.{}字面量
    var obj2 = {};
    console.log(obj2); //{age: 12, fn: ƒ}
    obj2.name = 30;
    obj2.fn = function() {
        console.log("这样子添加方法也是可行的")
        return 40;
    }
    console.log(obj2); //{name: 30, fn: ƒ}
    //4.构造函数创建对象
    function CreatePerson(name) {
        this.name = name;
        this.showName = function() {
            alert(this.name);
        }
    }
    var getCreateName = new CreatePerson('苹果');
    getCreateName.showName(); //苹果
    console.log(getCreateName);//CreatePerson {name: "苹果", showName: ƒ}
    //5、工厂方式创建对象
    function createPerson(name) {
        //1、原料---->空对象
        var obj3 = new Object();
        //2、加属性方法
        obj3.name = name;
        obj3.showName = function() {
            alert(this.name);
        }
        //3、返回该new出来的原料空对象;
        return obj3;
    }
    var getObjName = createPerson('苹果2代');
    getObjName.showName();//苹果2代
    console.log(getObjName);//{name: "苹果2代", showName: ƒ}
</script>

 

posted @ 2018-04-16 10:18  鱼樱前端  阅读(157)  评论(0编辑  收藏  举报