码迷,mamicode.com
首页 > 其他好文 > 详细

230 构造函数原型prototype

时间:2020-01-20 22:37:51      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:java   实例   com   idt   htm   lang   fun   分配   问题   

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

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

标签:java   实例   com   idt   htm   lang   fun   分配   问题   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!