js的构造函数

作者: 我的昵称是小狼 | 来源:发表于2018-05-26 19:33 被阅读0次

js的构造函数和其他语言一样是用来初始化对象的,但是有一点不同js中任何函数都可以作为构造函数,只要用new 去调用都会生成一个新的对象.但是为了方便区别一般js中构造函数的首字母都会大写.

js中有几种不同的构造函数.

1.动态原型模式:

function Persion(){

this.name = 'lsh';

if (!this.sayName){

Persion.prototype.sayName = function (){

console.log(this.name);

}

}

}

var p = new Persion();

p.sayName();

这种方式可以在构造函数内部检查你需要添加的原型是否存在来决定是否添加原型方法或属性

2.寄生构造函数:

function Person (){

let obj = new Object();

obj.name = 'lsh';

obj.sayName = function(){

console.log(this.name);

}

return obj;

}

var p = new Person();

p.sayName();

这种方式采用在构造函数内部生成一个新的对象,但是同时衍生了一个问题就是返回的对象跟构造函数其实是没有关系的,无法使用 instanceof 检测对象类型,所以不推荐使用.

3.稳妥构造函数:

function Person(name,age){

let obj = new Object();

this.age = age;

obj.sayName = function(){

console.log(name+age);

}

return obj;

}

var p = new Person('lsh',24);

p.sayName();

这种构造函数跟寄生构造函数有一点类似,采用在构造函数内部再生成一个对象,但是稳妥构造函数生成的对象,只能调用你暴露出来的接口,例如name 只能通过sayName函数去访问,还有age相当于一个私有属性.同时稳妥构造函数也是不能使用instanceof来检查类型的,原因同寄生构造函数一样.

相关文章

  • 我的JS笔记 -- 类

    JS是没有类的,但JS可以利用构造函数实现近似类的功能。 构造函数 构造函数,是用来创建对象的函数。与普通的函数声...

  • 前端JS进阶二(ES6-Class语法)

    Class和普通构造函数有何区别 前端会使用ES6中的Class来代替JS中的构造函数 JS 构造函数 Class...

  • 2020-12-15

    js对象的创建和函数 创建对象 工厂模式 构造函数 原型方式+构造函数

  • 2021-04-15

    Js构造函数、原型、原型链整理 1,普通函数、构造函数区别: 1,名字: 构造函数首字母建议大写,普通函数首字母建...

  • js原型prototype原型链__proto__以及必会的ne

    什么是构造函数 构造函数是典型的面向对象编程语言,js的对象语言体系,是基于构造函数和原型链的构造函数是生成对象实...

  • js构造函数this指向

    JS里没有类. 构造函数是个函数,this指向的是个对象,this蒙上眼睛指也指不到构造函数去. 构造函数的thi...

  • 箭头函数和普通函数的区别

    定义 变量提升 由于 js 的内存机制,箭头函数需要先定义后调用 构造函数 箭头函数作为匿名函数,不能作为构造函数...

  • 面向对象/内置构造函数

    内置构造函数创建对象 JS中的内置构造函数 String Number Boolean 注意:(区别于string...

  • 三分钟全面了解构造函数

    上篇介绍了js函数三个定义方法:函数声明、函数表达式、以及构造函数;今天具体讲解构造函数; 什么是构造函数 用ne...

  • JS构造函数

    JS的构造函数首字母最好大写,让别人一看就知道这个是构造函数 构造函数要用new来创建对象 构造函数里面的参数名可...

网友评论

    本文标题:js的构造函数

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