js高级1 面向对象 封装继承多态 创建一个对象多种方法(主要是构造函数) 构造函数的问题

本文深入探讨面向对象编程的核心概念,包括封装、继承与多态,通过实例展示如何利用这些特性提高代码的复用性和模块化程度。文章还介绍了构造函数、工厂函数以及不同对象创建方法,帮助读者理解面向对象设计的灵活性与效率。

//  什么是对象

面向对象就是对面向过程对封装 使代码高复用低耦合   封装继承多态

 

var xm={           // 封装后使字符串有意义比如name代表了名字
	name:"小明",
	liuDog:function(){
		console.log("我在遛狗呀");
	}
}
// 使代码模块话 可以提高复用性和降低耦合度

// 封装

	var obj={

	} 
	var obj1={
		name:"张学友",
		sayHello:function () {
			console.log("hello");
		}
	}
	//obj.sayHello();		// is not a function
	// 混入式继承 for in
	for (var k in obj1){
		obj[k]=obj1[k];
	}
	obj.sayHello();		// cosole.log(hello)

// 简单的继承

实例的父类变量接受子类的对象

// 多态

 var xm={    // 可以直接创建一个对象 但是可扩展性太差
 	name:"小明"
 }
var xm=new Object()
xm.name="小明"		// 内置函数的方法
function creatObj(name){   // 工厂函数(不推荐使用)
	var xm=new Object();
	xm.name=name		
	return xm
}
var xm=creatObj("小明");   // 创建一个简单的工厂函数
var xh=creatObj("小红");
console.log(xm,xh)
</script>
function Person(name,say){	// 构造函数 首字母大写 用来区分
	// new 新创建出来的对象赋值给this
	this.name=name;
	this.say=say
}
var p=new Person("小明2",function(){
	console.log("我是小明呀");
});  // new Object();
console.log(p)  // 默认返回新创建的这个对象  普通函数则要return
p.say();        // 我是小明呀
// 总的来说 new说用来创建对象的 构造函数是用来初始化对象的
如果像普通函数一样调用构造函数 this指向window全局变量

// 创建对象的方法

 function say(){
 	console.log("我是"+this.name);  //this指向调用该方法的对象
 }
 function People(name){
 	this.name=name;
 	this.say=say;  // 所有对象公用一个方法就定义一个函数 防止资源浪费
 }
 var obj1=new People("obj1");
 obj1.say();
 var obj2=new People("obj2");
 obj2.say();

//构造函数资源浪费的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值