关于js原型的面试题
2016-09-24 20:44
260 查看
今天遇到关于javascript原型的一道面试题,现分析下:
原题如下:
function A(){
}
function B(a){
this.a = a;
}
function C(a){
if(a){
this.a = a;
}
}
A.prototype.a = 1;
B.prototype.a = 1;
C.prototype.a = 1;
console.log(new A().a);
console.log(new B().a);
console.log(new C(2).a);
分析:
console.log(new A().a); //new A()为构造函数创建的对象,本身没有a属性,所以向它的原型去找,发现原型的a属性的属性值为1,故该输出值为1;
console.log(new B().a); //new B()为构造函数创建的对象,该构造函数有参数a,但该对象没有传参,故该输出值为undefined;
console.log(new C(2).a); //new C()为构造函数创建的对象,该构造函数有参数a,且传的实参为2,执行函数内部,发现if为真,执行this.a = 2,故属性a的值为2;
故这三个的输出值分别为:1、undefined、2.
原题如下:
function A(){
}
function B(a){
this.a = a;
}
function C(a){
if(a){
this.a = a;
}
}
A.prototype.a = 1;
B.prototype.a = 1;
C.prototype.a = 1;
console.log(new A().a);
console.log(new B().a);
console.log(new C(2).a);
分析:
console.log(new A().a); //new A()为构造函数创建的对象,本身没有a属性,所以向它的原型去找,发现原型的a属性的属性值为1,故该输出值为1;
console.log(new B().a); //new B()为构造函数创建的对象,该构造函数有参数a,但该对象没有传参,故该输出值为undefined;
console.log(new C(2).a); //new C()为构造函数创建的对象,该构造函数有参数a,且传的实参为2,执行函数内部,发现if为真,执行this.a = 2,故属性a的值为2;
故这三个的输出值分别为:1、undefined、2.
相关文章推荐
- 关于js原型的面试题
- 关于js原型的经典面试题解析
- 关于js原型的面试题讲解
- 关于一道JS面试题的思考
- js - 关于this、new、原型
- 关于js原型继承
- 关于Js那些经常出的面试题
- 关于js的几道经典题(作用域、原型链等)自己做的
- 关于JS面向对象中原型和原型链以及他们之间的关系及this的详解
- 分享一个关于js原型链的理解
- 关于js变量两个面试题
- 关于js中构造函数与原型对象相结合的模式的疑惑与想法
- 一到关于js函数的前端面试题引发的血案
- 关于js中对对象原型和构造函数的一些理解
- js面试题,关于变量提升,作用域,全局变量
- 一道关于call和this的JS面试题
- js中关于原型的几个方法
- js关于原型构造函数和原型链的理解
- 关于js原型继承
- 关于js原型继承的理解