javascript函数的特殊对象this

this引用的是函数据以执行的环境对象
1.当在全局作用域中调用函数的时候,this对象引用的就是window
2.在局部作用域中调用函数,this对象引用的是当前对象

ex:
window.color = 'blue';
var obj= {
    color:red,
    }
function sayColor(){
    console.log(this.color);
}
sayColor();//打印出blue,因为此时的this在全局作用域下
o.sayColor();//打印出red,此时的this在o的对象下,this引用的对象是o
### JavaScript 函数对象的概念及用法 #### 1. 函数对象的基础概念 在 JavaScript 中,函数是一种特殊类型的对象,称为 **Function 对象**。这意味着函数不仅是一段可执行的代码,还具有属性和方法。所有的函数都是 `Function` 构造函数的实例[^2]。 #### 2. 创建函数对象的方式 JavaScript 提供多种方式来创建函数对象: - **函数声明** 这是最常见的定义函数的方法。 ```javascript function greet(name) { console.log(`Hello, ${name}!`); } ``` - **函数表达式** 将函数赋值给变量的一种形式。 ```javascript const add = function(a, b) { return a + b; }; ``` - **箭头函数 (ES6+)** 更简洁的语法用于定义匿名函数。 ```javascript const multiply = (a, b) => a * b; ``` - **构造函数** 使用 `new Function()` 可动态生成函数,但不推荐因安全性较低。 ```javascript const subtract = new Function('a', 'b', 'return a - b'); ``` #### 3. 函数作为一等公民 函数JavaScript 中被视作一等公民,意味着它可以像其他数据类型一样被传递、返回或存储到变量中。这种特性使得高阶函数成为可能,例如 `map` 方法[^1]。 ```javascript const numbers = [1, 2, 3]; const doubled = numbers.map(function(num) { return num * 2; }); console.log(doubled); // 输出: [2, 4, 6] ``` #### 4. 函数的属性与方法 每个函数都继承自 `Function.prototype`,因此拥有默认的属性和方法。 - **length 属性**: 表示函数期望接收的参数数量。 ```javascript function sum(a, b, c) {} console.log(sum.length); // 输出: 3 ``` - **prototype 属性**: 所有通过该函数创建的对象共享此原型链上的属性和方法。 ```javascript function Person(name) { this.name = name; } Person.prototype.greet = function() { console.log(`Hi, I'm ${this.name}`); }; const person = new Person('Alice'); person.greet(); // Hi, I'm Alice ``` #### 5. 特殊类型的函数 除了常规函数外,还有一些特殊函数类型值得了解。 - **构造函数**: 结合 `new` 关键字用来创建新对象。 ```javascript function Car(make, model) { this.make = make; this.model = model; } const myCar = new Car('Toyota', 'Corolla'); console.log(myCar); ``` - **生成器函数**: 定义带有复杂迭代逻辑的函数。 ```javascript function* countDown(start) { while (start >= 0) { yield start--; } } const iterator = countDown(3); console.log(iterator.next().value); // 输出: 3 console.log(iterator.next().value); // 输出: 2 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值