javascript原型理解(1),原型是父类

什么是原型?作用是什么?

a:当有一个对象叫User,User.prototype即是它的原型,我觉得叫父类更好理解
b:显示原型User.prototype
c:隐式原型 new User()._proto_

原型相当于该实例的一个父类,当需要定义公共方法时,需要用到原型
核心:定义公有方法

//demo1
		function User(username,password){
			this.username = username;
			this.password = password;
		}
		//1.调用原型
		console.log(User.prototype);//Object constructor: ƒ User(username,password)__proto__: Object
		
		let user1 = new User('zs','123');
		let user2 = new User('ls','456');
		console.log(user1.__proto__);//Object constructor: ƒ User(username,password)__proto__: Object

		console.log(user2.__proto__);//Object constructor: ƒ User(username,password)__proto__: Object

		//2.定义公共方法
		//2.1私有方法
		user1.login = ()=>{
			console.log('登陆');
		}
		user2.loginOut = ()=>{
			console.log('退出登陆');
		}
		
		//2.2公有方法
		User.prototype.sleep = ()=>{
			console.log('睡着了');
		}
		
		user1.login();//登陆
		user2.loginOut();//退出登陆
		
		user1.sleep();//睡着了
		user2.sleep();//睡着了
		
		
		/**
		 * 显示原型   User.prototype	
		 * {
		 * 	a:通过类调用
		 * }
		 * ------------------------------------------------
		 * 隐式原型	user._proto_ 	
		 * {
		 * 	a:通过实例取调用
		 * 	b:根据命名规则下划线开头的对象即为私有对象,那应该是不能调用的,下面尝试一下
		 * 	c:调用隐式原型报错如下:Uncaught TypeError: Cannot set property 'eat' of undefined
		 * }
		 * 
		 * */
		//调用 隐式原型的方式 提供一个公用方法
		//Uncaught TypeError: Cannot set property 'eat' of undefined
		/*user1._proto_.eat = ()=>{
			console.log(this.name + 'eat shit');
		}*/

猜你喜欢

转载自blog.csdn.net/qq_38188047/article/details/105247231
今日推荐