web前端高级JavaScript - 关于面向对象的一些面试题

  • 1.下面代码运行的结果
//1. 答案: 0 30
function fun(){
   
    this.a=0;
    this.b=function(){
   
        alert(this.a);
    }
}
fun.prototype={
   
    b:function(){
   
        this.a=20;
        alert(this.a);
    },
    c:function(){
   
        this.a=30;
        alert(this.a)
    }
}
var my_fun=new fun();
my_fun.b(); // 0
my_fun.c();// 30
  • 2.写出下面代码执行输出的结果
// 2.答案:'Tomundefinedjoin'
function C1(name) {
   
    if (name) {
   
        this.name = name;
    }
}
function C2(name) {
   
    this.name = name;
}
function C3(name) {
   
    this.name = name || 'join';
}
C1.prototype.name = 'Tom';
C2.prototype.name = 'Tom';
C3.prototype.name = 'Tom';
alert((new C1().name) + (new C2().name) + (new C3().name));//'Tomundefinedjoin'
//(new C1().name)没有传递参数,所以没有私有name属性,取原型上的公有name属性
//(new C2().name)没有传递参数,默认值为undefined,取私有name属性值为undefined
//(new C3().name)没有传递参数,默认值为undefined,取私有name属性,如果值为undefined则取值join
  • 3.下面代码运行的结果?
//3. 答案:
// 1 undefined 
// ƒ () {this.a = 3;}
// false true true 
// ƒ () {this.a = 2;}
function Fn() {
   
    let a = 1;
    this.a = a;
}
Fn.prototype.say = function () {
   
    this.a = 2;
}
Fn.prototype = new Fn;
let f1 = new Fn;

Fn.prototype.b = function () {
   
    this.a = 3;
};
console.log(f1.a);//1
console.log(f1.prototype);//undefined
console.log(f1.b);//ƒ () {this.a = 3;}
console.log(f1.hasOwnProperty('b'));//false
console.log('b' in f1);//true
console.log(f1.constructor == Fn);//true
console.log(f1.say);//ƒ () {this.a = 2;}
  • 4.写出下面代码执行输出的结果
// 4.答案: 2 4 1 1 2 3 3 3
function Foo() {
   
    getName = function () {
   
        console.log(1);
    };
    return this;
}
Foo.getName = function () {
   
    console.log(2);
};
Foo.prototype.getName = function () {
   
    console.log(3);
};
var getName = function () {
   
    console.log(4);
};
function getName() {
   
    console.log(5);
}
Foo.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值