首页 > 其他 > 详细

230 构造函数原型prototype

时间:2020-01-20 21:57:09      阅读:53      评论:0      收藏:0      [点我收藏+]

构造函数通过原型分配的函数是所有【实例】对象所共享的

JavaScript 规定,每一个构造函数都有一个prototype 属性,指向另一个对象。注意,这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有。

我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法。

function Star(uname, age) {
    this.uname = uname;
    this.age = age;
}
Star.prototype.sing = function() {
    console.log('我会唱歌');
}
var ldh = new Star('刘德华', 18);
var zxy = new Star('张学友', 19);
ldh.sing();//我会唱歌
zxy.sing();//我会唱歌

技术分享图片

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 构造函数的问题. 
        function Star(uname, age) {
            this.uname = uname;
            this.age = age;
            // this.sing = function() {
            //     console.log('我会唱歌');

            // }
        }

        // 2. 一般情况下,我们的公共属性定义到构造函数里面, 公共的方法我们放到原型对象身上
        Star.prototype.sing = function() {
            console.log('我会唱歌');
        }
        var ldh = new Star('刘德华', 18);
        var zxy = new Star('张学友', 19);

        console.log(ldh.sing === zxy.sing);  // (1)true; (2)如果构造函数内 和 构造函数prototype上同时写了一个函数,则执行构造函数内的函数,输出false
        // console.dir(Star);
        ldh.sing();  // 我会唱歌
        zxy.sing();  // 我会唱歌
    </script>
</body>

</html>

230 构造函数原型prototype

原文:https://www.cnblogs.com/jianjie/p/12219467.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!