Javascript原型对象与原型链初步了解①

 想看原视频请去B站  技术蛋老师 视频学习,此日志仅作为个人学习笔记用。

原型对象理解

1.  __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性

2.  __proto__的完整名称叫[[protortpe]]

a对象为孙子级,String为父级,String原型为爷爷辈,Object原型为祖先辈();

var a = new String('abc');
var b = new Number(666);
var c = new Object();

 下面代码请结合图片理解。Object原型没有原型,指向null。

console.log(a.__proto__ === String.prototype);
console.log(b.__proto__ === Number.prototype);    //孙子级a和b对象的__proto__ 
//与 父级 String的prototype属性指向一致,同时指向爷爷辈String原型
console.log(a.__proto__.__proto__ === b.__proto__.__proto__ );
console.log(a.__proto__.__proto__ === c.__proto__);  //孙子级a和b对象的祖先级指向一致,
//同时指向祖先辈Object原型。
console.log(c.__proto__.__proto__)  //祖先辈Object原型没有父亲辈,指向null。

 

面试题 Javascript new 一个新对象的过程。

1.创建一个新对象son

2.新对象son会被执行__proto__连接向原型对象,son.__proto__ === Mother.prototype 

3.新对象son和函数调用的this会绑定起来,mother函数体的this会指向son。 

4.执行构造函数的代码 

5.如果函数没有返回值,name就会自动返回这个新对象。

    function Mother(lastName){  //创建一个名为Mother的函数,lastName为参数
        this.lastName = lastName; 
        console.log(this.lastName);
    }

    var son = new Mother('磊');  //Mother函数new了一个新函数son,并传值为'磊'.

    son(); //打印磊

原型链理解

代码请配合图片理解

    function Supermarket(){}
    Supermarket.prototype.product = '口罩';  //在Supermaket 的原型中找到了属性

    function Shop(){}
    Shop.prototype = new Supermarket();     
    //注释  person.__proto__.__proto__ = Shop.prototype = Supermarket.prototype  
    //注释  Shop没有属性,更改Shop的原型Supermarket 找。

    var person = new Shop();    
    //注释  person.__proto__ = Shop.prototype  person没有属性通过原型去Shop 找,

    console.log(person);

 

面试题《instanceof和原型链》如何判断一个变量是数组类型,继承中判断实例是否属于他的父类

 第一题,判断greeting 对象 是否为数组

    var greeting = ['新年快乐', '恭喜发财', '身体健康'];
    console.log(greeting instanceof Array);     //使用instanceof 判断是否为数组

 第二题,判断f对象里是否有a或者b方法

var F = function(){};

Object.prototype.a = function(){};
Function.prototype.b = function(){};

var f = new F();

f 是 F的实例,F是父母,f为小孩。f和F都没定义a或者b方法

通过__proto__隐式属性查找,用控制台输入f查找,object下只有a:f()方法

 

 

instanceof运算符与原型链的理解会在下一个文章中介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值