JavaScript系列之公有、私有和静态属性和方法


一、公有属性、公有方法

1、定义

指的是所属这个类的所有对象都可以访问的属性,叫做公有属性。

2、理解

一个模子刻出来的东西,都有的一样的属性和一样的能力。

3、ES5

function User(name, age) {
    
    
	this.name = name; // 公有属性
	this.age = age;
}
User.prototype.getName = function () {
    
    
	// 公有方法
	return this.name;
};
var user = new User("FELaoL", 22);
console.log(user.getName()); // FELaoL

4、ES6

class User {
    
    
	constructor(name, age) {
    
    
		this.name = name; // 公有属性
		this.age = age;
	}
	getName() {
    
    
		// 公有方法
		return this.name;
	}
}
let user = new User("FELaoL", 22);
console.log(user.getName()); // FELaoL

二、私有属性、私有方法

1、定义

私有属性只能在类的内部访问。

2、理解

模子的材质是铁,但从做出来的成品却不能知道模子的材质。

3、ES5

function User(name, age) {
    
    
	var name = name; // 私有属性
	var age = age;
	function consoleAge() {
    
    
		// 私有方法
		console.log(age);
	}
	consoleAge(age); // 22
}
var user = new User("FELaoL", 22);

4、ES6

class User {
    
    
	height = "178cm"; //公有属性
	#age = 25; //私有属性:只能在类的内部调用
	constructor(name, age) {
    
    
		this.name = name; // 公有属性
		this.age = age;
		this.sex = 0; // 公有属性
		let sex = 1; // 私有属性
	}
	getName() {
    
    
		return this.name;
	}
}
let user = new User("FELaoL", 22);
console.log(user.getName()); // FELaoL
console.log(user.sex); // 22
console.log(user.height); // 178cm
console.log(user.#age); // Uncaught SyntaxError: Private field '#age' must be declared in an enclosing class

三、静态属性、静态方法

1、定义

静态属性指的是 Class 本身的属性, 即Class.propname, 而不是定义在实例对象( this) 上的属性。定义在实例对象( this)上的属性为非静态属性。
静态方法是定在在类上,而不是定义在类的原型上,类可以调用,类的实例不能调用的方法。

2、理解

本质上是类属性、类方法

3、ES5

function Per() {
    
    }
Per.staticName = "FELaoL"; // 静态属性 是函数对象的属性
Per.call = function () {
    
    
	console.log("call");
}; // 静态方法
console.log(Per.staticName); // FELaoL
Per.call(); // call

4、ES6

class Person {
    
    
	static num = 10; // 静态属性
	constructor() {
    
    
		this.name = "张三";
	}
	static fn() {
    
    
		// 静态方法
		console.log("fn");
	}
}
console.log(Person.num); // 10
Person.fn(); // fn
let zhangsan = new Person();

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

猜你喜欢

转载自blog.csdn.net/weixin_62277266/article/details/129102442
今日推荐