双河市网站建设_网站建设公司_Sketch_seo优化
2026/1/20 9:43:40 网站建设 项目流程
在 JavaScript 中,函数是一等对象(first-class objects),这意味着函数不仅可以被调用,还可以像普通对象一样拥有属性和方法。下面通过几个例子来说明“函数中有属性”这一特性。

✅ 示例 1:给函数添加自定义属性

function greet() {console.log("Hello!");
}// 给函数添加属性
greet.version = "1.0";
greet.author = "Alice";console.log(greet.version); // 输出: "1.0"
console.log(greet.author);  // 输出: "Alice"greet(); // 调用函数本身
💡 这里 greet 是一个函数,但同时也拥有 versionauthor 两个属性,就像普通对象一样。

✅ 示例 2:利用函数属性实现计数器

function counter() {counter.count++;console.log(`调用次数: ${counter.count}`);
}// 初始化计数属性
counter.count = 0;counter(); // 调用次数: 1
counter(); // 调用次数: 2
counter(); // 调用次数: 3
📌 这种方式可以避免使用全局变量,将状态“附着”在函数自身上。

✅ 示例 3:函数的内置属性(如 namelength

JavaScript 函数自带一些标准属性:
function add(a, b) {return a + b;
}console.log(add.name);    // "add" —— 函数名
console.log(add.length);  // 2 —— 形参个数
这些是函数对象的只读内置属性

✅ 示例 4:函数作为构造器时的 prototype 属性

function Person(name) {this.name = name;
}Person.prototype.sayHi = function() {console.log(`Hi, I'm ${this.name}`);
};const p = new Person("Bob");
p.sayHi(); // Hi, I'm Bob// prototype 也是函数的一个属性
console.log(Person.prototype); // { sayHi: [Function], constructor: [Function: Person] }
⚠️ 注意:prototype 属性仅在函数被用作构造函数时才有特殊意义。

总结

  • 函数是对象 → 可以拥有属性。
  • 可以手动添加自定义属性(如 fn.cache = {})。
  • 内置属性如 namelengthprototype 等也属于函数的属性。
  • 常用于缓存、计数、元数据存储等场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询