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

2017-08-08  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读