js-prototype函数

来源:互联网 发布:淘宝落地窗帘布 编辑:程序博客网 时间:2024/05/16 02:04

js中方法的分类:
a 对象方法
b 类方法
c 原型方法

<script>function People(name) {    this.name = name;    this.showname = function () {        console.log(name)    }//对象方法。。。。。。。。。。。。。}    People.showheight = function (height) {        console.log(height);    }//类方法。。。。。。。。。。。。。。。    People.prototype.showweight = function (weight) {        console.log(weight);    }//原型方法。。。。。。。。。。。。。。。    var p1 = new People("christal");    p1.showname();//对象方法    People.showheight(222);//类方法    p1.showweight(111);//原型方法</script>

js中每个对象都有prototype属性,每个对象的prototype属性被解释为:返回对象类型原型的应用

A.prototype = new B()
A的prototype是B的一个实例,A可以用B的方法和属性,也可以理解为A的prototype是以B的一个对象为原型克隆创建的。

<script>function B() {    this.show = function () {        console.log("what is your name?");    };    this.work = function () {        console.log("let us go to work!");    }}    function A() {        this.show = function () {            console.log("my name is christal!")        }    }    A.prototype = new B();    var a = new A();    a.show();//my name is christal!    a.work();//let us go to work!</script>

A复制了B的方法,可以使用work方法,因为A和B都有show方法, 那么先选择A的show方法

每个函数在被创建的时候就有prototype属性,prototype也是一个对象,并且具有constructor(构造函数)的属性,当构造函数在创建一个实例的时候,这个实例内部有个指针指向构造函数的prototype属性,这个指针是-proto-。

<script>function A() {}</script>

监听A函数对象

<script>function person(name) {    this.name = name;}    person.prototype.showname = function () {        console.log(this.name);    }    var p1 = new person("christal");    p1.showname();</script>

person和p1对象的监听

p1具有了name的属性同时具有了proto属性,指向person对象的prototype,可以访问到prototype内部定义的showname方法。

1 0