js对象创建,构造函数,工厂模式,基本创建方法

版权声明:Element https://blog.csdn.net/goucheng112/article/details/82562540

前言:

1,实例对象是通过构造函数创建的,创建的过程叫做实例化。

2,如何判断对象是不是这个数据类型?

    可以通过 constructor来看他的构造器是什么。

    也可以使用instanceof来判断,推荐使用此方法

 

 

创建对象的基本方法

第一种方法,创建一个Object的实例,在给他添加属性和方法。

    <script>
        var person = new Object;
        person.name = "wahaha";
        person.age = 30;
        person.sayHi = function(){
            console.log("nihao");
            
        }
    </script>

 第二种方法,字面量创建对象,和前面在本质上并没有什么区别,但显得更加直观。

    <script>
        var person = {
            name:"wahaha",
            age:30,
            sayHi:function(){
                alert("haha")
            }
        }
     </script>

工厂模式创建对象

    <script>
        function createPerson(name,age){
            var p = new Object;
            p.name = name;
            p.age = age;
            p.sayHi = function(){
                console.log("nihao");
                
            }
            return p;
        }
        var per1 = createPerson("wahaha",30);
        var per2 = createPerson("kangshifu",40)
     </script>

工厂模式创建对象,你会发现和第一种基本创建方法差不多,但工厂模式利用函数可以传参数的特性,对第一种基本创建方法加以改良,使得工厂模式可以通过传递参数创造出很多具有不同属性的对象。

这个创造函数就像工厂里的流水线一样,死板得很。会重复创造一些其他对象不需要的东西。


构造函数创建对象

<script>
           function Person(name,age){
            this.name = name;
            this.age = age;
            this.sayHi = function(){
                console.log(this);
                
            }
        }
    var per1 = new Person("huang",23);
    var per2 = new Person("li",22);
    
 </script>

和工厂模式的区别在在哪里呢?

视觉上的:这里有this,这里面没有用到Object,没有返回函数。

内在的区别:构造函数方法创建了一个新的Person类型,下面的新建的per1per2都是在这个类型下面。

但不论是构造函数创建的对象还是基本方法创建的对象都是属于Object类型。

猜你喜欢

转载自blog.csdn.net/goucheng112/article/details/82562540
今日推荐