前端(面向对象、继承)

// 1.面向对象的程序设计
	(1) 
	(2) 对象实例
	(3) 获取原型 类 prototype
// 2. 继承
	(1) ES6 的继承, 通过 extends
	(2) 基于原型的继承, 通过构造函数的 prototype 属性来实现
// 3. 原型链 (object)

// 4. this 的指向
	1. 方法中的 this, 指向调用方法的对象
	2. 全局环境下指向全局对象(window)
	3. 全局函数中的 this, 指向全局对象
	4. 内部函数中的 this, 指向全局对象
	5. 事件中的 this, 指向触发事件的 DOM 对象
	6. 构造函数中的 this, 指向 new 创建的对象
	7. 箭头函数中的 this, 指向定义函数上下文的this
	8. 使用闭包, var 获取 dom 的索引

	(1) 普通函数 this 指向 window (全局对象)
		eg: function fun () {
			console.log(this)
		}
		fun()
		
	(2) this 放在方法中, this 指向调用这个方法的对象
		let cat = {
			name: "小黑",
			sayName () {
				console.log(this)
			}
		}
		cat.sayName() // this指向这个对象

// 5. call、 apply、 bind 的用法, 都能改变 this 的指向
	(1) call 是一个方法,是函数方法, call可以调用函数, call可以改变函数中 this 的指向
		let dog = {
			name: "小黑",
		   	sayName (food) { // 不能使用箭头函数, 或者 this 的指向就变成 window
		      console.log(this.name + "喜欢吃" + food)
		    }
		}
		let cat = {
		  name: "小喵"
		}
		dog.sayName.call(cat, "鱼") // 打印结果: 小喵喜欢吃鱼 (call 改变了 this 的指向)
		// dog.sayName.apply(cat, ["鱼"]) // 打印结果: 小喵喜欢吃鱼 (apply 改变了 this 的指向, 和 call 的传参不一样)
		// dog.sayName.bind(cat, "鱼")() // 打印结果: 小喵喜欢吃鱼 (bind 改变了 this 的指向, 不能直接调用函数)

	(2) 通过 call、apply、bind 实现继承. 继承:子类可以实现父类的方法
		function Animal (name, age, sex) {
			this.name = name,
			this.age = age,
			this.sex = sex,
			this.eat = function () {
				console.log("出去玩")
			}
		}
		function Cat () {
			Animal.call(this) // this 指向 new 出来的 cat
		}
		const cat = new Cat()
		cat.eat()
	
// 6. 对象拷贝
	(1) javaScript 的内存结构: 包括 栈内存、堆内存. 基本类型保存在栈内存(numbel、string、boolean、nullundefined);
引用类型保存在堆内存(对象、数组、函数), 但是它们的索引保存着栈内存中。
	(2) vue 的对象列表
	(3) 浅拷贝
	(4) 递归: 函数自己调用自己
	(5) 深度拷贝	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值