随笔分类 -  JS高级

摘要:1:块级作用域 if{}for{}对let/const来说代码体都是块级作用域 块级作用域的应用 举例说明:获取多个按钮监听 2:暂时性死区使用let/const声明的变量,在声明之前变量不可以被访问 例如 在let之前访问age代码会报错 1 var age = 18 2 console.log( 阅读全文
posted @ 2022-03-23 21:11 沁霓 阅读(30) 评论(0) 推荐(0)
摘要:继承内置类 Array是本身拥有的类 1 class NewArray extends Array { 2 firstItem() { 3 return this[0] 4 } 5 lastItem() { 6 return this[this.length - 1] 7 } 8 } 9 var a 阅读全文
posted @ 2022-03-23 09:39 沁霓 阅读(34) 评论(0) 推荐(0)
摘要:1:定义类和定义构造函数差不多,并且很多特性也和构造函数一致 1 class Person { 2 name = 'tyy' 3 } 4 var p = new Person 5 console.log(p); 6 console.log(p.__proto__); 7 console.log(p. 阅读全文
posted @ 2022-03-23 08:51 沁霓 阅读(69) 评论(0) 推荐(0)
摘要:let/const是新增的可以用来声明变量 1:const 的值不能改变,但是如果赋值的是引用类型,就可以通过引用找到对应的对象,然后修改对象的内容 1 const mingzi = 'tyy' 2 // mingzi = 'tsf' 这样程序会报错 3 const obj = { 4 foo: ' 阅读全文
posted @ 2022-03-22 21:26 沁霓 阅读(39) 评论(0) 推荐(0)
摘要:1 var obj = { 2 name: "heihei", 3 age: 18 4 } 5 var info = Object.create(obj, { 6 address: { 7 value: "成都", 8 enumerable: true 9 } 10 }) 11 12 functio 阅读全文
posted @ 2022-03-20 19:23 沁霓 阅读(39) 评论(0) 推荐(0)
摘要:关于继承最佳实现就是 寄生组合函数继承 具体看实例 1 function inheritProtoType(subType, superType) { 2 subType.prototype = Object.create(superType.prototype) 3 Object.definePr 阅读全文
posted @ 2022-03-20 14:53 沁霓 阅读(79) 评论(0) 推荐(0)
摘要:前边继承虽然我们也 var p=new Person() Student.prototype=p 但是这种方式会在new Person()的时候执行Person,会有很多弊端 这里我们采用使用原型式继承函数,来创建类似于之前的p,但是有点是,不用多次去调用函数,直接举例子 1 var obj = { 阅读全文
posted @ 2022-03-20 12:11 沁霓 阅读(48) 评论(0) 推荐(0)
摘要:假如我们采用这种方式来构造函数对象 1 function Person(name, age, friends) { 2 this.name = name, 3 this.age = age, 4 this.friends = friends 5 this.eating = function() { 阅读全文
posted @ 2022-03-19 17:18 沁霓 阅读(46) 评论(0) 推荐(0)
摘要:面向对象的三大特性 封装 继承 多态 我们知道获取一个对象的属性,如果对象没有该属性就会到对象的原型上面获取,这里引出原型链的概念,原型上也可以有原型 1 var obj = { 2 name: 'heihei' 3 } 4 obj.__proto__ = { 5 6 } 7 obj.__proto 阅读全文
posted @ 2022-03-19 11:08 沁霓 阅读(74) 评论(0) 推荐(0)
摘要:对象的原型 1:原型概念:每个对象都有一个[[prototype]],这个属性称之为对象的原型(隐式原型) 浏览器提供__proto__可以看到 2:原型有什么作用 每次查找对象里面的属性时,都会调用[[get]] 第一步先在对象里面查找 第二步对象里面查找不到去原型里面查找 函数的原型(函数也是一 阅读全文
posted @ 2022-03-18 17:04 沁霓 阅读(60) 评论(0) 推荐(0)
摘要:1:new Object()和字面量方式 此处就不在举例,使用这两个方式会创造大量重复的代码 2:工厂模式 举例说明 1 function Createperson(name, age, address) { 2 var p = new Object() 3 p.name = name 4 p.ag 阅读全文
posted @ 2022-03-18 14:26 沁霓 阅读(89) 评论(0) 推荐(0)
摘要:JS编程既有函数式编程也有面向对象编程 简单说一下面向对象:抽象现实世界 进入正题 创建对象的方式 1:传统Object()的方式 1 var obj = Object() 2 obj.name = "yaokaixin" 3 obj.mood = "happy" 4 obj.age = 18 5 阅读全文
posted @ 2022-03-18 09:58 沁霓 阅读(39) 评论(0) 推荐(0)
摘要:1:with:简单点来说就是明确了查找域 1 var mood = 'happy' 2 var obj = { 3 name: 'tyy', 4 age: 18 5 } 6 with(obj) { 7 name = 'taosifan' 8 age = 40 9 } 10 console.log(o 阅读全文
posted @ 2022-03-17 18:48 沁霓 阅读(59) 评论(0) 推荐(0)
摘要:简单说下纯函数: 广泛的定义: 1:相同的输入有相同的输出 2:函数执行不会产生副作用(例如不会改变全局变量的值,或者改变本地存储的值) 先对比一下slice和splice 1 var names = ['aaa', 'bbb', 'ccc', 'ddd'] 2 var newnames = nam 阅读全文
posted @ 2022-03-16 21:08 沁霓 阅读(62) 评论(0) 推荐(0)
摘要:一:手写函数实现call的功能,但是可能一些边界情况没有考虑完整 1 Function.prototype.hycall = function(thisArg, ...arg) { 2 // 这里的this指向调用这个hycall的函数 3 var fn = this 4 //判断thisArg是否 阅读全文
posted @ 2022-03-16 20:50 沁霓 阅读(106) 评论(0) 推荐(0)
摘要:组合函数:当某个数据每次调用完一个函数又需要调另一个函数时,可以把这两个函数组合起来更加方便,组合后可以自动依次调用。 举个简单的例子:普通的组合函数 1 function hyCompose(t1, t2) { 2 return function compose(t3) { 3 return t2 阅读全文
posted @ 2022-03-16 19:21 沁霓 阅读(108) 评论(0) 推荐(0)