JS刷题1

  • 第一题
var color = 'green'
var test = {
    color: 'red',
    getColor: function() {
        var color = 'black'
        console.log(this.color)
    }
}
var t1 = test.getColor
t1()  
test.getColor()  //this指向test

解析var t1 = test.getColor

var t1 = function() {
        var color = 'black'
        console.log(this.color)
    }
执行t1()函数时,this指向window

知识点一:js函数调用时加括号与不加括号的区别
知乎
加括号:调用该函数,返回值为函数返回值
不加括号:查看函数信息,返回值为整个函数信息

知识点二:this的指向问题
参考博客
始终指向调用它的对象

  • 第二题
function test1() {
    var n = 4399

    function add() {
        n++
        console.log(n)
    }
    return { n: n, add: add }  //一个匿名对象 n基本类型  add引用类型
}
var result = test1()
var result2 = test1()

result.add()  // 4400
    // result2.add()  //4401
console.log(result.n) //4399
    // result2.add()  //4400

解析var result = test1()这里得到return值,并将该值存放在堆内存中,此时n=4399; var result2 = test1()存储在另一个堆内存,result和result2相互独立
属性add存储的add是引用类型,会随着函数的多次调用而改变结果值
result.add()调用时返回4400;result2.add()返回4401
属性n存储的n是基本数据类型,值保持不变。console.log(result.n)返回4399
最后result2.add()result和result2指向两个不同的对象,有不同的作用域链,返回4400

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值