js原型链对开发的影响

一.在原型上修改会产生多大的影响
更改构造函数的原型会对所有圆形脸上有该构造函数的原型的对象产生影响

function Test() {}

Object.prototype.testFun1 = function() {
    console.log('testFun1')
}

Test.prototype.testFun2 = function() {
    console.log('testFun2')
}
const obj = new Test()

obj.testFun1()
obj.testFun2()

[Running] node "\test.js"
testFun1
testFun2
------------------------------
const arr = [1,2,3]
console.log(arr.toString())
console.log(Object.prototype.toString.call(arr))
Array.prototype.toString = function() {
    return 'Array'
}
console.log(arr.toString())

[Running] node "\test.js"
1,2,3
[object Array]
Array

二.利用原型链判断类型
1.instanceof 关键字

object instanceof constructor
判断object的原型链中,是否存在constructor的原型
const arr = [1,2,3]
console.log(arr instanceof Array)
输出:true | arr 是 数组
console.log(arr instanceof Object)
输出:true | arr 是 对象
console.log(arr instanceof Function)
输出:false| arr 不是 函数

-----------------------------

function Person() {
    this.run = function() {
        console.log('run')
    }
}
function Man() {}
Man.prototype = new Person()
const p = new Man()

console.log(p instanceof Man)
console.log(p instanceof Person)
console.log(p instanceof Object)
p.run()

true
true
true
run

三.创建空原型对象(无隐式原型的对象,节约内存)

const obj = Object.create(null) create的参数为原型
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值