美文网首页
如何通过构造函数的方式创建一个拥有属性和方法的对象?protot

如何通过构造函数的方式创建一个拥有属性和方法的对象?protot

作者: 蜕变最美的你 | 来源:发表于2017-08-08 10:09 被阅读0次
    如何通过构函数的方式创建一个拥有属性和方法的对象?

    使用new运算符创建一个构造函数,构造函数F会返回类型为function的name的对象,function可以接受参数,可以根据参数来创建相同属性不同值得的对象,function实例在其作用域中有一个constructor属性,指向的是function本身;

    当我们使用new来构造函数对象时,大致分为三步:
    1、创建类的实例,这一步是把一个空的对象的proto属性设置为函数.prototype;
    2、初始化实例,函数传入参数并被调用,关键字this被设定为该实例;
    3、返回实例;

    6.png
    prototype 是什么?有什么特性?

    每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象。
    在var x = new Foo()的时候,Foo.prototype,是一个对象,x.proto也引用了这个对象。
    当Foo.prototype = null,只是把Foo.prototype这个对象设为了null,而x.proto不改变。x.方法会沿着原型链_proto向上找,直到找到属性方法。直接Foo.prototype.方法= null,修改了对象属性方法的值,x.proto.方法的值也随之改变。
    Prototype 是全局属性,适用于所有的Javascript对象

    创建一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus?

     function Car(name,color,status){
            this.name = name;
            this.color = color;
            this.status = status;
            this.Run = function(){
                console.log(this.name+this.color+this.status+'正在行驶');
            };
            this.Stop = function(){
                console.log(this.name+this.color+this.status+'已停车');
            };
            this.getStatus = function(){
                console.log(this.name+this.color+this.status+'状态很好')
            }
        }
        var car = new Car ('BMW','black','round');
        car.Run();
        car.Stop();
        car.getStatus();
    
    画出如下代码的原型图
    function People (name){
            this.name = name;
            this.sayName = function(){
                console.log('my name is:' + this.name);
            }
        }
    
        People.prototype.walk = function(){
            console.log(this.name + ' is walking');
        };
        var p1 = new People('哈哈');
        var p2 = new People('22');
        p1.walk();
        p2.sayName();
    
    1.png

    相关文章

      网友评论

          本文标题:如何通过构造函数的方式创建一个拥有属性和方法的对象?protot

          本文链接:https://www.haomeiwen.com/subject/tcazlxtx.html