一. 有一个类如下:
function Person(name) {
this.name = name
}
let p = new Person('Tom');
'1. p._proto_等于什么?
答案:Person.prototype
2. Person._proto_等于什么?
答案:Function.prototype
解析:
1,2两个是同一个问题,都是考察原型链相关知识,只需要记住一句: 实例的_proto_属性(原型)等于其构造函数的prototype属性。实例p的构造函数为Person,而Person的构造函数为Function。
触类旁通
var f = {}
F = function (){};
Object.prototype.a = 'value a';
Function.prototype.b = 'value b';
console.log(f.a)
console.log(f.b)
console.log(F.a)
console.log(F.b)
'结果:
value a;
undefined;
value a;
value b;
解析:
f是Object的实例,F是Function的实例,对象的属性会顺着原型链一层一层向上查找,找不到则为undegined
3. 若将题干改为
function Person(name) {
this.name = name
return name
}
let p = new Person('Tom')
'实例化Person过程中,Person返回什么(或者p等于什么)?
答案:
{name: "Tom"}'
4.若将题干改为
function Person(name) {
this.name = name
return {}
}
let p = new Person('Tom');
'实例化Person过程中,Person返回什么(或者p等于什么)?
{}'
解析:
构造函数不需要显式的返回值。使用new来创建对象(调用构造函数)时,如果return的是非对象(数字、字符串、布尔类型等)会忽略返回值;如果return的是对象,则返回该对象(注:若return null也会忽略返回值)。
5. typeof和instanceof的区别
在JavaScript中,判断一个变量的类型常常会用typeof运算符,在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回'object'。
instanceof运算符用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性。语法:object instanceof constructor 参数: object(要检测的对象)constructor(某个构造函数)描述:instanceof 运算符用来检测constructor.prototype是否存在于参数object的原型上。
6. 如果Student inherit from Person(Student类继承Person,需是基于原型的继承),let s = new Student('Lily'),那么s instanceof Person返回什么?
function Person(name) {
this.name = name
}
function Student() {
}
Student.prototype = Person.prototype;
Student.prototype.constructor = Student;
let s = new Student('Tom');
console.log(s instance Person);
答案: true
7. new和instanceof的内部机制
1. 创建一个新对象,同时继承对象类的原型,即Person.prototype;
2. 执行对象类的构造函数,同时该实例的属性和方法被this所引用,即this指向新构造的实例;
3. 如果构造函数return了一个新的‘对象’,那么这个对象就会取代真个new出来的结果,如果构造函数没有return对象,那么就会返回步骤1所创建的对象,即隐式返回this。(一般情况下构造函数不会返回任何值,不过在一些特殊情况下,如果用户想覆盖这个值,可以选择返回一个普通的对象来覆盖)
相关知识
腾讯T2大牛亲自教你!javaif语句判断月份在哪个季节
借花献佛!朋友干了5年整的Java面试官,给我分享了一份面试官最爱问的Java面试题
2019腾讯新文创生态大会开场视频:一花一世界,灵感绽放
腾讯
html+css+javascript满屏雪花爱心520表白网站 (含音乐)520告白/七夕情人节/生日礼物/程序员表白必备...
腾讯云服务器快速创建一个表白网站。简单可操作。
米花同城社区小程序前端安装更新教程
html+css+javascript实现520告白爱情树(含音乐)程序员表白必备
腾讯游戏平台app手机下载
腾讯医典
网址: 腾讯前端面试题(一) https://m.huajiangbk.com/newsview949350.html
上一篇: 1+x 证书 Web 前端开发中 |
下一篇: 前端开发环境搭建之docker篇 |