JavaScript 对象实例化

本文介绍了JavaScript中通过内置对象和构造函数创建对象的方法。利用Object内置对象可以创建空白对象并添加属性与方法,通过构造函数则能批量实例化具有相同属性和方法的对象。

参考资料:《JavaScript入门经典》

利用内置对象创建直接实例

JavaScript有一个内置对象Object,利用它可以创建一个空白的对象。

aObject = new Object();

添加属性

这样,我们就创建了没有任何属性和方法的空白对象。现在我们可以用以下方法为对象添加属性:

aObject.info = "I am a obeject";

现在,我们成功为aObject对象添加了一个名为info的属性,它是一个文本字符串。

添加方法

为对象添加方法也很简单,首先我们需要定义一个函数,然后把函数关联到aObject对象上就可以了。如

function show(){
alert(this.info);}//定义一个函数
aObject.showInfo=show; //附加到aObject的方法上
aObject.showInfo();// 调用showInfo方法

注意:把函数关联到对象上时,不能包括函数括号,只能使用函数名称因为我们是要把函数show()赋予aObject.showInfo方法,而不是调用函数。

如果加上括号,如

aObject.showInfo=show();// 表示调用函数,并把函数的返回值赋予aObject.showInfo

在这里,我们定义函数的时候,用到了this关键字,在以这种方式使用时,this指代当前调用这个函数的对象

但是如果直接调用show()函数时,会显示"undefined",因为这时候调用函数的对象是全局对象window,而window对象并没有名为info的属性

事实上,给对象设置方法还有一种更简单方便的方法,那就是使用匿名函数。

aObject.showInfo=function () {
            alert(this.info);
        } // 同样实现了给aObject对象添加了showInfo方法。但不需要给自定义的函数命名,所以被叫做匿名函数

使用类似的语句,我们可以给实例化的对象添加任意多的属性和方法

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>demo1</title>
    <script>
        aObject = new Object();
        aObject.info = "I am a Object";
        function  show() {
            alert(this.info);
        }
        aObject.showInfo1 = show;
        // aObject.showInfo=function () { 两种方法有同样的效果
        //     alert(this.info);
        // }

    </script>
</head>

<input type="button" value="正确的调用" onclick="aObject.showInfo1()">
<input type="button" value="错误的调用" onclick="show()">

</body>
</html>

利用构造函数实例化对象

当我们需要实例化多个对象时,有必要使用构造函数来创建对象。

构造函数的声明

       function Person(personName) { // 括号内为参数,可以设置多个参数来定制对象。
            this.name = personName; // 将传入的personName值赋予name属性
            this.info = 'I am called' + this.name; //设置info属性
            this.infoShow = function () {   // 利用匿名函数添加方法
                alert(this.info);
            }
        }

对象实例化

    var person1 = new Person('Adam');
    var person2 = new Person('Eve'); //利用构造函数实例化了两个对象,并根据传入的参数的不同,定制了两个不同的对象。

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>demo1</title>
    <script>
        function Person(personName) {
            this.name = personName;
            this.info = 'I am called' + this.name;
            this.infoShow = function () {
                alert(this.info);
            }
        }
            var person1 = new Person('Adam');
            var person2 = new Person('Eve');

    </script>
</head>
<body>
<input type="button" value="show info on Adam" onclick="person1.infoShow()"><br>
<input type="button" value="show info on Eve" onclick="person2.infoShow()">

</body>
</html>





### 如何在 Node.js实例化对象 在 Node.js实例化对象可以通过多种方式实现,具体取决于所使用的模块系统以及面向的对象模型。以下是几种常见的方法。 #### 使用构造函数模式创建对象 通过定义一个构造函数并使用 `new` 关键字来创建新实例: ```javascript function User(name) { this.name = name; } User.prototype.sayHello = function() { console.log(`Hello, ${this.name}`); }; const userInstance = new User('Alice'); userInstance.sayHello(); // 输出 "Hello, Alice" ``` 此代码片段展示了如何利用 JavaScript 的原型链机制构建自定义类型的实体[^1]。 #### 利用 ES6 类语法简化对象实例化过程 ES6 引入了类的概念,使得基于类的语言特性更加直观易懂: ```javascript class Product { constructor(id, title) { this.id = id; this.title = title; } showDetails() { console.log(`${this.id}: ${this.title}`); } } let productOne = new Product(101, 'Laptop'); productOne.showDetails(); ``` 这段程序说明了现代 JavaScript 提供了一种更简洁的方式来表达继承关系和属性初始化逻辑[^2]。 #### 结合模块化的单例模式 当希望在整个应用程序生命周期内只存在唯一的一个特定类型实例时,可以考虑采用单例模式。下面的例子是在 CommonJS 环境下应用该设计模式的一种形式: ```javascript // singleton.js 文件内容如下: module.exports.getInstance = (function () { let instance; function createInstance() { const obj = {}; obj.property = 'value'; return obj; } return { getInstance: function () { if (!instance) { instance = createInstance(); } return instance; }, }; })(); ``` 调用方只需要引入这个模块并通过其提供的静态方法获取唯一的实例即可[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值