- class
//使用class创建构造函数
1.class Foo {
constructor(who){
this.me = who;
}
//给类添加新方法(这些方法都会加在原型prototype上)
identify(){
return "I am " + this.me;
}
}
//继承
class Bar extends Foo {
constructor(who){
// super() 指的是调用父类
// 调用的同时,会绑定 this 。
// 如:Foo.call(this, who)
super(who);
}
speak(){
alert( "Hello, " + this.identify() + "." );
}
}
//静态方法可以通过类名调用,不能通过实例对象调用,否则会报错
class Person {
static sum(a, b) {
console.log(a + b)
}
}
var p = new Person()
Person.sum(1, 2) // 3
p.sum(1,2) // TypeError p.sum is not a function
//其它创建对象的方式:
//1.创建 Object 对象
var p = new Object()
//动态添加属性和方法
p.name = 'Tom'
p.age = 18
p.setName = function(name){
this.name = name
}
//2.字面量的方式:
var p = {
name = 'Tom'
age = 18
setName: function(name){
this.name = name
}
}
//3.工厂函数
function createPerson(name,age){
var obj = {
name: name,
age: age,
setName: function(name){
this.name = name
}
}
return obj
}
var p1 = createPerson('Tom',18)
//4.自定义构造函数
function Person(name, age){
this.name = name
this.age = age
this.setName = function(name){
this.name = name
}
}
var p1 = new Person('Tom',18)
//5.构造函数+原型的组合模式
function Person(name, age){
this.name = name
this.age = age
}
Person.prototype.setName = function(name){
this.name = name
}
var p1 = new Person('Tom',18)
js创建对象的方式
于 2023-02-20 11:29:01 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)