JavaScript创建对象的常用方法


0.前言

有一段时间没写博客了,上次我们说了一种用字面量方法创建对象病房舒文属性和方法,这一次和大家分享另外两种常用方法:

  • 工厂模式创建对象(返回对象的函数)并访问属性和方法
  • 构造函数创建对象并访问属性和方法

1.工厂模式创建对象(返回对象的函数)并访问属性和方法

代码如下:




    
    工厂模式创建对象(返回对象的函数)并访问属性和方法


    


2.构造函数创建对象并访问属性和方法(常用)

构造函数(就是函数,为了做区分,一般我们将构造函数的首字母大写)
注意:构造函数声明后不会被执行,仅仅是定义了一个用于这些属性和方法的"类型",没有任何对象的实例产生
(1)声明构造函数

function GirlFriend(name, age, height, weight) {
            //属性
            this.name = name;
            this.age = age;
            this.height = height;
            this.weight = weight;

            //函数内部普通变量看成是对象的私有属性(外部无法访问)
            //可以通过中间函数间接访问
            var _money = 10000000;
            this.setMoney = function(money) {
                _money = money;
            };
            this.getMoney = function(){
                return _money;
            };

            this.eat = function() {

                console.log("吃");
                console.log(_money);
            };
        }

(2)创建对象
公式:var 对象名 = new 构造函数名(参数列表);
扩展:new 构造函数名(参数列表)的讲解
1.在堆区开辟出一片空间用来保存对象;
2.将对象中对应的属性进行赋值;
3.返回对象的引用(栈区)。

var girl1 = new GirlFriend("大雷", 20, 150, 180);
console.log(girl1);

结果:

JavaScript创建对象的常用方法_第1张图片
捕获.PNG

(3)间接访问私有属性

girl1.setMoney(100);
console.log(girl1.getMoney());
girl1.eat();

结果:

捕获.PNG

(4)多个对象之间相互不影响

var girl2 = new GirlFriend("二雷", 19, 1500, 1800);
console.log(girl2.age);
console.log(girl2.getMoney());

结果:

捕获.PNG

(5)添加静态方法

GirlFriend.staticFunc = function() {
    console.log("我是静态函数");
};
//调用静态函数
GirlFriend.staticFunc();

注意:条用静态方法,要用构造函数名调用。

//添加属性
        girl1.faceValue = 100;
        //添加方法
        girl1.run = function() {
            console.log("run");
        };
        girl1.run();

        //删除
        delete girl1.faceValue;
        delete girl1.run;

3.传递对象

  声明两个变量,引用同一个对象,那么这两个变量相同吗?答案是肯定不相同,这是两个不同的变量。

var obj1 = {
            name:"sunck",
            age:18,
            height:175,
            weight:65,
        };

        //obj3与obj1引用的是同一个对象,但是这是两个不同的变量
        var obj3 = obj1;

        obj1.height = 180;
        console.log(obj3.height);

4.传递的比较

var obj1 = {
            name : "wh",
            age : 18,
            height : 175,
            weight : 65,
        };
        var obj3 = obj1;
        console.log(obj1 == obj3);
        console.log(obj1 == obj3);



        var obj5 = {
            name : "wh",
            age : 18,
            height : 175,
            weight : 65,
        };
        console.log(obj1 == obj5);
        console.log(obj1 == obj5);

结果:

JavaScript创建对象的常用方法_第2张图片
捕获.PNG

总结:①两个对象比较仅且当这两个引用是同一个对象时才真的相等。
②如果两个引用指向的是不同的对象,但是对象的属性与行为完全相同的,那么这两个对象也是不相等的。

5.好长没有写博客了,有点生疏,希望多多见谅啊!!!

你可能感兴趣的:(JavaScript创建对象的常用方法)