如何在JavaScript中定义并调用带点的对象方法(如lib.execute())
带点的函数调用实现方式
你见到的lib.execute()、hello.greet()这类写法,是对象方法调用的语法,点前面是一个对象,点后面是绑定在该对象上的方法属性,你原来的写法不符合JS语法所以无法运行。
错误原因
直接使用function hello.world()的声明方式是非法的:JS普通函数声明要求函数名必须是合法标识符,不能包含点符号,点符号仅用于访问对象的属性/方法。
正确实现方式
方式1:先定义对象,再追加方法
// 先初始化hello为普通对象 const hello = {}; // 给hello对象绑定world方法 hello.world = function() { document.write('Hello world'); };
对应HTML调用无需修改,直接用你的原有写法即可生效:
<button onclick="hello.world();">Click me</button>
方式2:定义对象时直接声明方法
你可以在初始化对象的时候一次性定义所有挂载的方法:
const hello = { // 定义world方法 world: function() { document.write('Hello world'); }, // 还可以扩展其他方法 greet: function(name) { document.write(`你好,${name}`); } };
调用方式和之前一致,新增的greet方法可以用hello.greet('张三')调用。
方式3:ES6+ 方法简写语法
现代JS支持更简洁的对象方法写法:
const hello = { world() { document.write('Hello world'); }, greet(name) { document.write(`你好,${name}`); } };
方式4:类/构造函数批量生成实例方法
如果需要批量生成多个带相同方法的对象,可以用类实现:
// 定义类 class Lib { execute() { console.log('lib.execute 被调用'); } } // 实例化对象后调用方法 const lib = new Lib(); lib.execute();
内容的提问来源于stack exchange,提问作者user14264568
相关产品推荐
相关产品推荐

