xinggevip

JS之找对象
模板函数<script> // 模板函数 function userCreate(na...
扫描右侧二维码阅读全文
02
2019/07

JS之找对象

模板函数

<script>
    // 模板函数
    function userCreate(name,age){
        var userObj = {};
        userObj.name = name;
        userObj.age = age;
        userObj.inCrese = function (){
            this.age = this.age + 1;
            return this.age;
        };
        return userObj;
    };


    var user1 = userCreate("Tom",18);
    var user2 = userCreate("Jak",20);
    user1.inCrese();
    console.log(user1);
    console.log(user2);
    // console.log(user1.inCrese());

</script>

优化模板函数


    <script>
        // new操作符其实就是相当于做了一下事情


        var createUser = function(name,age){
            // 无论创建多少个对象,只有一个setAge方法,节省资源
            var objUser = Object.create(obj);
            objUser.name = name;
            objUser.age = age;

            return objUser;
        }

        var obj = {
            setAge:function (age){
                this.age = age;
            }
        }


        var obj1 = createUser("tom",15);
        obj1.setAge(30);
        console.log(obj1);  // {name: "tom", age: 30}

        var obj2 = createUser("jac",20);    // {name: "jac", age: 60}
        obj2.setAge(60);
        console.log(obj2);
    </script>

Object.create()

<script>
    var obj = {
        name:"Tom",
        age:10,
        setAge:function (age){
            this.age = age;
        }
    }

    /*
        两个对象调用的始终是一个方法,不像上一个文件创建多个对象,每个对象拥有相同的方法
    */

    var obj1 = Object.create(obj);  // 原型 一个对象和另一个对象的联系  
    obj1.setAge(50);
    var obj2 = Object.create(obj);
    console.log(obj1);
    console.log(obj2);


</script>

new操作创建对象

<script>
    // "user strict"   // 严格模式
    // new操作符创建对象

    // js函数其实是函数个对象的结合体
    // function创建的每一个对象都有一个默认属性 prototype,他就是一个对象
    // 创建一个对象是有一个默认书香construct属性

    // function add2(num){
    //     return num+2;
    // };
    // add2.wh = "tom";
    // console.log(add2.wh);
    // console.log(add2.prototype);


    var userCreate = function(name, age){
        console.log("111");
        this.name = name;
        this.age = age;
    };

    userCreate.prototype.setAge = function (age){
        this.age = age;
    };

    var user1 = new userCreate("Tom",8);
    var user2 = new userCreate("小明",12);
    user1.setAge(10);
    console.log(userCreate.prototype);

    // this 我们函数调用的时候会有this指向一个对象
    // 1.函数直接调用 this不知道只想谁,非严格模式下指向五window,严格模式指向undefined
    // 2.对象调用的是后,this指向这个对象
    // 3.call、apply 方法 传什么对象,this指向那个对象
    // 4.new 执行函数的时候前面有个new this指向一个空对象



</script>
Last modification:July 2nd, 2019 at 09:13 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment