前端基础知识练习题---原型链

第一题:

Object.prototype.a = function() {
  console.log('a');
};
Function.prototype.b = function() {
  console.log('b');
}
var F = function() {};
var f = new F();

f.a();
f.b();

F.a();
F.b();

第二题:

var A = function() {};
A.prototype.n = 1;
var b = new A();
A.prototype = {
  n: 2,
  m: 3
}
var c = new A();

console.log(b.n);
console.log(b.m);

console.log(c.n);
console.log(c.m);

第三题:

var foo = {},
    F = function(){};
Object.prototype.a = 'value a';
Function.prototype.b = 'value b';

console.log(foo.a);
console.log(foo.b);

console.log(F.a);
console.log(F.b);

第四题:

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);

第五题:

function fun() {
  this.a = 0
  this.b = function () {
    console.log(this.a)
  }
}

fun.prototype = {
  b: function () {
    this.a = 20
    console.log(this.a)
  },
  c: function () {
    this.a = 30
    console.log(this.a)
  }
}

var my_fun = new fun()

my_fun.b()
my_fun.c()

第六题:

function Fn() {
  var n = 10
  this.m = 20
  this.aa = function () {
    console.log(this.m)
  }
}

Fn.prototype.bb = function () {
  console.log(this.n)
}

var f1 = new Fn
Fn.prototype = {
  aa: function () {
    console.log(this.m + 10)
  }
}

var f2 = new Fn
console.log(f1.constructor)
console.log(f2.constructor)
f1.bb()
f1.aa()
f2.aa()
f2.__proto__.aa()
f2.bb()

第七题:

function A() {
  B = function () {
    console.log(10)
  }
  return this
}

A.B = function () {
  console.log(20)
}

A.prototype.B = function () {
  console.log(30)
}

var B = function () {
  console.log(40)
}

function B() {
  console.log(50)
}

A.B()
B()
A().B()
B()
new A.B()
new A().B()

在这里插入图片描述

第八题:

function F() {}
function O() {}

O.prototype = new F();
var obj = new O();

console.log(obj instanceof O);
console.log(obj instanceof F);
console.log(obj.__proto__ === O.prototype);
console.log(obj.__proto__.__proto__ === F.prototype);

第九题:

function User() {}
User.prototype.sayHello = function() {}
var u1 = new User();
var u2 = new User();
console.log(u1.sayHello === u2.sayHello); 
console.log(User.prototype.constructor); 
console.log(User.prototype === Function.prototype); 
console.log(User.__proto__ === Function.prototype); 
console.log(User.__proto__ === Function.__proto__); 
console.log(u1.__proto__ === u2.__proto__); 
console.log(u1.__proto__ === User.__proto__); 
console.log(Function.__proto__ === Object.__proto__); 
console.log(Function.prototype.__proto__ === Object.prototype.__proto__); 
console.log(Function.prototype.__proto__ === Object.prototype); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值