上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页

2019年10月16日

摘要: 方法一: 方法二: 阅读全文
posted @ 2019-10-16 17:37 aisowe 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 使用Object.keys()可以获取对象本身所有的可遍历属性; 使用Object.getOwnPropertyNames()可以获取对象本身所有属性, 不管是否可遍历; 使用for...in...循环可以获取对象所有可遍历属性, 包括本身的属性和继承的属性; 使用下面的函数可以获取对象的所有属性, 阅读全文
posted @ 2019-10-16 17:21 aisowe 阅读(2885) 评论(0) 推荐(0) 编辑
摘要: 有两种方法, Object.getOwnPropertyNames() 和 Object.keys() 第一种: Object.getOwnPropertyNames(obj)只获取参数对象本身定义的属性, 不论这个属性是否可遍历. 第二种: Object.keys()只获取参数对象本身定义的属性, 阅读全文
posted @ 2019-10-16 16:50 aisowe 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 这里仅整理一个思路, 日后会详细补充. 1. 首先得下载 wordpress安装包, 上传到服务器上的 /var/www/html, 然后解压. 2. 然后安装apache 并启动, 启动一般是使用: systemctl start httpd.service 命令. 3. 在浏览器访问: ip/主 阅读全文
posted @ 2019-10-16 16:22 aisowe 阅读(1103) 评论(0) 推荐(0) 编辑

2019年10月15日

摘要: 这个问题是谷歌基于用户体验方面的考虑, 对页面加载时自动播放的音频作了限制, 试想一下, 如果你打开某个页面就立刻自动播放某种不可描述的声音, 那体验想必是十分酸爽. 尽管这个设定是针对音频的, 但实际上还影响了视频的自动播放, 因为视频也是有声音的!!!! 因此, 解决这个报错的方法很简单: 将给 阅读全文
posted @ 2019-10-15 22:09 aisowe 阅读(4204) 评论(1) 推荐(0) 编辑
摘要: 1. 使用Object.prototype.constructor.prototype进行比较 2. 使用: Object.prototype.isPrototypeOf()进行比较 注意, 这个方法和 instanceof 有点类似, 他的判断逻辑也是往参数对象原型链去找的, 因此就有了下面这些判 阅读全文
posted @ 2019-10-15 13:53 aisowe 阅读(560) 评论(0) 推荐(0) 编辑
摘要: Object.create()是一个用于生成新的对象的方法, 特点是: 1. Object.create()接收的第一个参数对象将会作为待生成的新对象的原型对象; 2. Object.create()接收的第二个参数是一个属性描述对象, 用于给新生成的对象添加实例方法和属性; 3. Object.c 阅读全文
posted @ 2019-10-15 13:44 aisowe 阅读(743) 评论(0) 推荐(0) 编辑
摘要: 使用: Object.create(null)生成的空对象在原型对象上也没有任何属性和方法. 阅读全文
posted @ 2019-10-15 13:23 aisowe 阅读(457) 评论(0) 推荐(0) 编辑
摘要: Object.create()会将参数对象作为一个新创建的空对象的原型, 并返回这个空对象, 基于这个功能, 就有了下面这个Object.create()的手动实现: 阅读全文
posted @ 2019-10-15 13:16 aisowe 阅读(1497) 评论(0) 推荐(0) 编辑

2019年10月14日

摘要: 1. 使用 Object.getPrototypeOf(); 2. 使用 obj.constructor.prototype; 3. 使用obj.__proto__; 三种方法中, 第一种是最靠谱的, 后面两种都不太靠谱. 阅读全文
posted @ 2019-10-14 21:54 aisowe 阅读(1144) 评论(1) 推荐(0) 编辑
摘要: 封装/继承/多态是面向对象编程的三个特征, js中实现构造函数的继承需要分两步实现: 1. 在子类构造函数中调用父类的构造函数; 2. 让子类的原型对象"复制"父类的原型对象; 下面是一个具体的例子: 阅读全文
posted @ 2019-10-14 20:21 aisowe 阅读(1049) 评论(0) 推荐(0) 编辑
摘要: js不提供现成的多重继承的方法, 但可以通过Object.assign()来手动实现: 阅读全文
posted @ 2019-10-14 16:49 aisowe 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 修改原型对象的方法分为两种情况, 一种是对原型对象的属性方法做增删改, 一种改变原型对象的指向. 第一种: 对原型对象的属性/方法做增删改 第二种: 改变原型对象的指向 以下代码中, 我们如果要整个改变原型对象的指向, 那目标对象中必须要有一个constructor属性, 值为这个原型对象关联的构造 阅读全文
posted @ 2019-10-14 16:08 aisowe 阅读(1069) 评论(0) 推荐(0) 编辑
摘要: 通过obj.constructor.name获取当前实例对象的构造函数名; 阅读全文
posted @ 2019-10-14 15:24 aisowe 阅读(385) 评论(0) 推荐(0) 编辑
摘要: emmm, 其实就是通过实例对象的constructor属性来new一个新的实例出来.. 这是一种不直接使用构造函数, 但可以生成实例对象的方法. 阅读全文
posted @ 2019-10-14 15:10 aisowe 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 上面这段代码表明: prototype对象的constructor属性指向当前实例对象的构造函数. 也就是说, constructor属性其实是反映了实例对象与构造函数之间的关系, 就好比是给孩子做DNA鉴定, 我们可以通过constructor这个属性来检测当前实例对象是哪个构造函数"生"的. 阅读全文
posted @ 2019-10-14 14:55 aisowe 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 通过构造函数生成的实例对象中的属性和方法其实是从构造函数中"copy"一份后生成的, 也就是说虽然生成的对象是构造函数的实例, 但里面的属性和方法确实相互独立的, 比如下面的lilei.sayHi 和 hanmeimei.sayHi这两个方法虽然同名, 功能也一样, 但实际上是内存中的两个不同地址里 阅读全文
posted @ 2019-10-14 11:11 aisowe 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 在三种绑定this的方法中, Function.prototype.call() 和 Function.prototye.apply() 都是会立即执行该函数的, 但回调函数是不能立即执行的, 它只是将函数体传进去即可. 因此就需要使用 Function.prototype.bind() 方法. 阅读全文
posted @ 2019-10-14 10:06 aisowe 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 有三种方法: 1. Function.prototype.call(); 2. Function.prototype.apply(); 3. Function.prototype.bind(); 一、Function.prototype.call() 可以指定函数在参数对象环境下执行; 注意: 1. 阅读全文
posted @ 2019-10-14 09:54 aisowe 阅读(75) 评论(0) 推荐(0) 编辑

2019年10月12日

摘要: 数组的空元素empty表示空位, 它不是一种数据类型, 而是由于人为修改arr.length 或者写入时多写了逗号造成的. undefined是一种数据类型, 在数组中表示这个位置的值未定义, 但它仍然指向某个内存地址, 这个内存地址指向的是undefined; empty和undefined在操作 阅读全文
posted @ 2019-10-12 18:05 aisowe 阅读(2995) 评论(0) 推荐(0) 编辑
摘要: 1. 使用Math.max.apply(null,arr) 2. 使用Math.max(...arr) 注意: Math.max()会把传进去的每个参数都用Number()转换为数值类型, 如果检测到某个数组元素不能转换为数值, 则终止操作, 并返回 NaN. 阅读全文
posted @ 2019-10-12 17:15 aisowe 阅读(1542) 评论(0) 推荐(0) 编辑
摘要: 所谓对象的原生方法, 也就是对象的原型链上的方法, 比如Object.prototype.hasOwnProperty(), 但原生方法可以在实例对象中覆盖, 这是如果我们想调用它的原生方法, 那就需要使用Function.prototype.call()方法了. 将Object.prototype 阅读全文
posted @ 2019-10-12 16:04 aisowe 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 回调函数中的this不做处理的话, this仍然会指向window, 解决方法有两种. 第一种: 使用另一个变量固定this, 适用于在对象方法中使用的情况. 下面是实际执行结果: 第二种: 将this作为数组处理方法的第二个参数传递进去 阅读全文
posted @ 2019-10-12 12:01 aisowe 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 如下所示, 得到的结果里面, 第二个this指向的是window这个全局对象而非f2, 原因就是多层this造成的指向不明引起的. 上面这段代码的实际运行效果其实是这样的: 但我们需要的效果是他指向a对象, 而不是window, 解决方法是通过另一个变量将this固定住: 这里使用了一个变量: se 阅读全文
posted @ 2019-10-12 11:15 aisowe 阅读(369) 评论(0) 推荐(0) 编辑

2019年10月11日

摘要: 1. 自定义一个异常需要使用构造函数 Error() 2. 抛出异常需要使用 throw 关键字 执行后就可以得到这样的效果: 阅读全文
posted @ 2019-10-11 16:27 aisowe 阅读(826) 评论(0) 推荐(0) 编辑
摘要: JavaScript里的this, Python里的self, 其实都是一个东西, 它的存在跟构造函数 / 类这种是分不开的, 当然, 也可以在其他场合下使用, 他的意义很多, 但最共通的一个特点是: this/self 总是返回一个对象. 至于返回的这个对象到底是什么, 其实就是我们需要去发掘的. 阅读全文
posted @ 2019-10-11 16:23 aisowe 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 需要使用Object.create()方法. 上面的代码说明了一个情况, 就是通过Object.create()生成的实例对象尽管是Person的实例对象, 在不手动赋值之前, 它的属性和方法是跟参数对象保持一致的; 阅读全文
posted @ 2019-10-11 13:55 aisowe 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 实现new命令的功能, 首先需要知道new命令都做了些什么: 第一步: 创建一个空对象, 作为实例对象的容器; 第二步: 将空对象的prototype指向构造函数的prototype; 第三步: 将空对象赋值给构造函数的this; 第四步: 执行构造函数中的其它代码; 基于上面的步骤, 就有了下面这 阅读全文
posted @ 2019-10-11 13:16 aisowe 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 因为构造函数也是一个函数, 自然也可以有return语句, 不过和一般函数不太一样的是, 在构造函数中如果return的是一个对象, 则会直接返回这个对象, 如果return 的不是一个对象, 那在new时会忽略这个retrun, 转而返回this对象. 1. 下面演示构造函数中返回一个对象的情况, 阅读全文
posted @ 2019-10-11 11:54 aisowe 阅读(2047) 评论(0) 推荐(0) 编辑
摘要: 如果一个构造函数内部没有this, 那可以说这个压根不是构造函数, 因为他并不能返回一个实例对象; 由上面的代码可知, 如果一个构造函数中没有this, 那使用new命令创建的实例对象是一个空对象, 但这个空对象的原型确实来自Person, 原因是new命令执行的四个步骤中, this是必要的. 如 阅读全文
posted @ 2019-10-11 11:33 aisowe 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 通过new命令生成一个实例对象经历了四个步骤: 1. 创建一个空对象, 作为将要返回的实例; 2. 将空对象的原型指向构造函数的prototype属性; 3. 将空对象赋值给构造函数的this; 4. 执行构造函数内部代码; 下面是这四个过程的演示: 阅读全文
posted @ 2019-10-11 11:16 aisowe 阅读(885) 评论(1) 推荐(0) 编辑
摘要: 通过构造函数 "new" 一个对象出来时, 如果忘记写这个 new, 那这个构造函数就不会返回一个实例对象, 而是会像普通函数一样执行. 下面是两种规避忘记写new时所引发的问题的方法: 1. 使用严格模式, 只需要在函数体内部第一行加一个单独的字符串: "use strict", 就可以在没有ne 阅读全文
posted @ 2019-10-11 10:48 aisowe 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 不使用new关键字时, 构造函数是一个普通函数 使用new关键字时, 构造函数生成的是一个实例对象 注意: 构造函数有两大特征区别于一般函数: 1. 内部声明的变量, 如果需要被实例对象所继承, 则需要使用this关键字. 2. 只有使用new命令才会实例化一个对象, 不使用的话就跟普通函数没有区别 阅读全文
posted @ 2019-10-11 10:05 aisowe 阅读(596) 评论(0) 推荐(0) 编辑

2019年10月10日

摘要: 1. 启动 2. 设置开机自动运行 阅读全文
posted @ 2019-10-10 14:08 aisowe 阅读(1316) 评论(0) 推荐(0) 编辑
摘要: 以上. 阅读全文
posted @ 2019-10-10 13:43 aisowe 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 理解对象可以从两个方面入手: 1. 对象是对实物, 对现实世界的抽象. 比如鼠标就是个一个对象, 鼠标左键 / 鼠标右键 / 鼠标滚轮这些就是这个对象的属性. 而左键 / 右键 / 滚轮的功能就是这个对象的方法. 比如电脑就是一个对象, 键盘 / 屏幕 / 触控板 / 摄像头 / CPU 等各种硬件 阅读全文
posted @ 2019-10-10 13:22 aisowe 阅读(576) 评论(0) 推荐(0) 编辑

2019年10月9日

摘要: 1. 匿名函数没有函数名 2. 匿名函数只有在执行到那里的时候才会创建, 执行完成后就会被销毁 3. 匿名函数不参与预解析 这个很好理解, 就是匿名函数因为不是function声明的, js检测不到, 所以不会参与预解析. 而且, 匿名函数是执行的时候才会创建, 执行完成后就会销毁, 因此可以节约内 阅读全文
posted @ 2019-10-09 15:57 aisowe 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 如下: 注意递归函数必须要设置结束递归的条件, 否则会进入死循环直到耗尽内存, 程序崩溃. 阅读全文
posted @ 2019-10-09 15:24 aisowe 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 前言: 函数的声明可以使用字面量, 也可以使用构造函数, 使用字面量时又分为: 1. 用 function声明; 2. 用 var声明; 这两者声明方式在进行JS预解析时是不一样的, 导致在调用时会有些许区别; 第一步: 使用 function声明, 整个函数都会被预解析, 函数可以在声明前调用 第 阅读全文
posted @ 2019-10-09 13:58 aisowe 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 需要使用构造函数: Function, 用法如下: 上面代码使用构造函数声明了四个函数: 加减乘除, 用于计算: 21*32+24/3-5 如上所示, 使用构造函数声明函数的做法较为繁琐, 性能上也没有字面量形式声明好, 但使用构造函数声明函数的做法体现的是: 函数也是对象 这句话. 阅读全文
posted @ 2019-10-09 13:40 aisowe 阅读(969) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页

导航