JavaScript对象属性是数据,方法是函数;最常用字面量创建,构造函数、class和Object.create()适用于不同场景;属性存状态,方法为可执行行为,通过this访问属性,注意get/set访问器和箭头函数的this陷阱。

JavaScript 中的对象通过多种方式创建,属性和方法本质都是对象的键值对,区别在于值的类型:属性是数据,方法是函数。
对象的常见创建方式
最常用的是字面量语法,简洁直观:
let person = {
name: "张三",
age: 25,
sayHello: function() { return "你好!"; }
};
- 构造函数方式(如 new Object())适合动态生成,但写法冗长
- 类(class)语法更接近传统面向对象,适合复杂逻辑和继承场景
- Object.create() 用于基于原型的精确控制,比如指定 null 原型或自定义 prototype
属性和方法的核心区别
属性存储状态(字符串、数字、布尔、数组、其他对象等),方法是可执行的行为(函数值)。
- person.name 是属性,取值直接返回字符串
- person.sayHello 是方法,本身是函数引用;加括号 person.sayHello() 才真正调用并返回结果
- 方法内部可通过 this 访问同一对象的属性(如 this.name),属性不能访问 this
- 属性可以是任意类型,方法必须是函数(包括箭头函数、匿名函数、命名函数)
容易混淆的细节
看似像方法的写法,不一定就是方法:
立即学习“Java免费学习笔记(深入)”;
- get/set 访问器属性:用 get name() {} 定义的不是普通属性也不是常规方法,而是读取时自动调用的函数,调用时不加括号
- 箭头函数作为方法的问题:在对象字面量中用箭头函数定义方法(sayHi: () => {...}),会导致 this 指向外层作用域,无法访问当前对象属性
- 动态添加时注意语法:添加属性用 obj.key = value;添加方法同样用赋值,但右边必须是函数表达式或引用
实用建议
日常开发优先使用字面量,逻辑复杂再考虑 class;区分属性和方法的关键,不是名字,而是值的类型和用途。
不复杂但容易忽略。











