sayHi

为了我的朋友,打算在此更新思考与成长记录,进一步与好友交流,也为了进一步找到更多的志同道合的同学。

以下是对这段 JavaScript 代码的分析: ### 代码运行过程分析 1. **定义函数 `sayHi`**: ```javascript function sayHi(){ console.log('Hello,', this.name); } ``` 此函数用于打印 `'Hello,'` 以及 `this.name` 的值。`this` 的指向会依据函数的调用方式而改变。 2. **定义对象 `person`**: ```javascript var person = { name: 'YvetteLau', sayHi: sayHi }; ``` `person` 对象包含 `name` 属性和 `sayHi` 方法,该方法引用了之前定义的 `sayHi` 函数。 3. **定义全局变量 `name`**: ```javascript var name = 'Wiliam'; ``` 在全局作用域中定义了变量 `name`,其值为 `'Wiliam'`。 4. **定义函数 `Hi`**: ```javascript var Hi = function(fn) { fn(); }; ``` `Hi` 函数接收一个函数作为参数,然后调用这个传入的函数。 5. **调用 `Hi.call(person, person.sayHi)`**: ```javascript Hi.call(person, person.sayHi); ``` `call` 方法的作用是调用函数并指定函数内部 `this` 的值。这里调用 `Hi` 函数,同时将 `person` 作为 `Hi` 函数内部的 `this` 值,并且把 `person.sayHi` 作为参数传递给 `Hi` 函数。 在 `Hi` 函数内部,`fn()` 调用了传入的 `person.sayHi` 函数。不过,由于 `fn` 是直接调用的,在非严格模式下,`this` 指向全局对象(在浏览器里是 `window`)。所以,`this.name` 会获取全局变量 `name` 的值,也就是 `'Wiliam'`。 ### 代码运行结果 运行这段代码,控制台会输出: ``` Hello, Wiliam ``` ### 相关代码示例 ```javascript function sayHi(){ console.log('Hello,', this.name); } var person = { name: 'YvetteLau', sayHi: sayHi }; var name = 'Wiliam'; var Hi = function(fn) { fn(); }; Hi.call(person, person.sayHi); ``` ### 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值