constructor类构造和构造函数的用法区别
constructor是ES6的新功能,用于类class构造如:
class human{
name;
#age;
constructor(name){
this.name=name;
}
sayage(){
console.log(this.#age);
}
sayname(){
console.log(this.name)
}
setage(sage){
this.#age=sage;
}
}
tip:JavaScript中没有private定义私有变量,在ES11后添加了#来定义私有变量和方法;
可以使用实例的constructor来返回类如:
let b =new a.constructor('nana')//等同于 let b=new person('nana');
构造函数如:
function person(name,age){
this.name=name;
this.age=age;
sayhello:()=>{
console.log('hello');
}
}
与class类构造的区别在于:class必须要new操作符 否则会报错,而构造函数可以直接调用 但是只会返回函数内return的值,如果没有则为undefined
js类和构造函数的4点差异_高山我梦口香糖的博客-CSDN博客_js中构造函数和类的区别
此处再写一下构造函数和工厂模式的区别:
工厂模式:
//工厂模式,定义一个函数创建对象
function creatPerson (name, age) {
var person = new Object();
person.name = name;
person.age = age;
person.sayName = function () {
alert(this.name);
};
return person;
}
构造函数:
//构造函数模式,为对象定义一个构造函数
function Person (name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
alert(this.name);
};
}
/*
工厂模式就是批量化生产,简单调用就可以进入造人模式(啪啪啪……)。
指定姓名年龄就可以造一堆小宝宝啦,解放双手。
但是由于是工厂暗箱操作的,所以你不能识别这个对象到底是什么类型、
是人还是狗傻傻分不清(instanceof 测试为 Object),
另外每次造人时都要创建一个独立的temp对象,代码臃肿,雅蠛蝶啊。
*/
而构造函数可以用用生产出来的p instanceof Person //返回true
prototype和_proto_
每个class都有显示原型prototype
每个实例都有隐式原型_proto_
实例的_proto_指向对应class的prototype
原文地址:https://www.jb51.cc/wenti/3282544.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。