js静态属性,实例属性,封装性,prototype,__proto__综合解析

原创作品,转载请注明来源,我的博客园sogeisetsu里也有这篇文章

js静态属性,实例属性,封装性,prototype,__proto__综合解析

下面是我在写博客的源代码,您可以先不要看他,先看下面的文字部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js属性</title>
    <script>
        //先构造一个函数
        //先搞清楚原型链
        function qust() {
   
            this.name="university";//这是公有属性
            this.age=12;
            //这是共有方法
            this.run=function () {
   
                console.log("have ran");
            };
            let age="12";//这是私有属性
            //这是私有方法
            function go() {
   
                console.log("have gone");
            }
        }
        //先创建一个实例对象
        let shili=new qust();
        //构造函数的原型对象通过prototype来调用
        console.log(qust.prototype);//打印原型对象,打印结果是object
        //注意,这个时候还没有改变原型对象
        console.log(qust.prototype.constructor);//打印原型对象的constructor
        /*打印结果是如下
        ƒ qust() {
            this.name="university";//这是公有属性
            this.age=12;
            //这是共有方法
            this.run=function () {
                console.log("have ran");
            };
         …
        * */
        console.log(qust);//打印构造函数
        /*结果如下
        * ƒ qust() {
            this.name="university";//这是公有属性
            this.age=12;
            //这是共有方法
            this.run=function () {
                console.log("have ran");
            };
         …*/
        console.log(qust === qust.prototype.constructor);//true,原型对象的constructor指向构造函数
        //但是,如果我们修改了qust.prototype(原型对象),qust.prototype.constructor还指向构造函数吗?
        qust.prototype={
   //prototype保存一些构造函数共有的属性,来节省内存
            type:"人类",
            typerun:function () {
   
                console.log('人类');
            }
        };
        console.log(qust === qust.prototype.constructor);//false,不相等了。
        // 注意点: 为了不破坏原有的关系, 在给prototype赋值的时候, 需要在自定义的对象中手动的添加constructor属性, 手动的指定需要指向谁
        qust.prototype={
   //prototype保存一些构造函数共有的属性,来节省内存
            constructor:qust,//不带括号
            setype:"人类",
            typerun:function () {
   
                console.log('人类');
            }
        };
        console.log(qust === qust.prototype.constructor);//true
        /*
        1.对象中__proto__组成的链条我们称之为原型链
        2.对象在查找属性和方法的时候, 会先在当
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值