美文网首页
自定义构造函数创建对象

自定义构造函数创建对象

作者: 夜静听风吹雨 | 来源:发表于2018-08-17 13:16 被阅读0次
//自定义构造函数创建对象
        //1.先自定义一个构造函数
        function Person(name,age){
            this.name = name;
            this.age = age;
            this.sayHi= function () {
                console.log("我叫"+this.name+"我今年"+this.age)
            }
        }
        //2.然后创建对象
       var per1 = new Person("晓阳",18);
        
        console.log(per1.name); //晓阳
        console.log(per1.age);  //18
        per1.sayHi(); //我叫晓阳我今年18
        console.log(per1 instanceof Person); //true

注意点:函数和自定义构造函数的区别?

  • 普通函数在调用的时候直接 functionName(); 调用就行,自定义构造函数是为了创建对象的!需要写new
  • 自定义构造函数的首字母要大写!

自定义构造函数能不能分辨出对象到底属于什么类型?

  • "对象" instanceof "类型";
  • 判断这个对象是不是Person类型,结果为布尔类型!

自定义构造函数实例化一个对象时,干了哪几件事

var per1 = new Person("晓阳",18);
这段代码在后台做了几件事情,也可以说是它的执行流程:
1.在内存"堆"中申请了一块空间储存对象
2.把this设置为当前对象
3.设置对象的属性和方法的值
4.把this返回

自定义构造函数的优缺点:

  自定义构造函数它知道自己从哪里来,通过谁生产出来的,能判断出实例化对象的类型! 
  缺点:它无法数据共享.这一点可以通过原型对象解决!

自定义构造函数创建对象所带来的问题:(也就是它的缺点)

//自定义构造函数
function Dog (name){
  this.name = name;
  this.say = function (){
    console.log("汪汪汪,我要吃狗粮")
  }
}
//实例化对象
var dog1 = new Dog("金毛");
var dog2 = new Dog("泰迪");

//调用对象的方法
dog1.say();
dog2.say();
console.log(dog1.say==dog2.say)//flash

以上面代码为例:
最后一行代码返回的为flash,自定义构造函数每次实例化出来的对象,构造函数都会创建一次,所以say方法在内存中创建了两次!他们在内存中的地址不同,所以不等!
但是因为它们的逻辑和功能一样,这样就导致了代码冗余,影响性能所以这里就需要用到原型对象!

JS原型对象>>>

相关文章

  • 创建对象的方法

    对象字面量 new Object()创建对象 工厂函数创建对象 自定义构造函数 属性和方法 new关键字 构造函数...

  • JavaScript原型

    创建对象的三种方式 字面量的方式 调用系统的构造函数 自定义构造函数方式 自定义构造函数创建对象做的事情 使用工厂...

  • JavaScript 面向对象

    单个对象 创建自定义对象 创建对象字面量 变体 工厂模式 构造函数模式 原型模式 构造函数模式+原型模式 寄生构造模式

  • 个人笔记——面向对象(创建对象、原型、继承),未完待续...

    一、创建对象 1.构造函数object()来创建 2. 字面量创建 3.工厂函数方法创建 4. 自定义构造函数创建...

  • 面向对象02-对象的创建

    对象的创建 字面量 内置构造函数(Object) 工厂函数 自定义构造函数 Object.create() 01 ...

  • 原型对象及使用原型对象注意事项

    原型对象概念 在构造函数创建出来的时候,系统会默认帮构造函数创建并关联的一个新对象自定义构造函数的原型对象默认是一...

  • 关于prototype

    原型对象(prototype)概念 在构造函数创建出来的时候,系统会默认帮构造函数创建并关联的一个新对象自定义构造...

  • 面向对象/自定义构造函数创建对象

    自定义构造函数创建对象 基本写法 function 构造函数名(参数1,参数2,参数3...) { //设置对象的...

  • 对象的创建

    创建对象 1. Object构造函数和对象字面量方法 2. 工厂模式 3. 构造函数模式(自定义) 创建 Pers...

  • 面向对象(二)创建对象的几种方法

    创建对象的几种方法 字面量方式 使用内置的构造函数 使用简单工厂函数 自定义构造函数 01字面量的方式创建对象 结...

网友评论

      本文标题:自定义构造函数创建对象

      本文链接:https://www.haomeiwen.com/subject/hrvabftx.html