-
Try catch 执行顺序查看全部
-
? 是 单字符匹配
* 是 多字符匹配
.? 是说 . 后面 跟着任意字符
.* 是说 . 后面 跟着 任意个数字符.,0个,1个,2个......查看全部 -
四种判断是否是数组的方法
查看全部 -
如果reduce不传第二个参数
默认第一个参数(函数)的第一个参数代表数组的第一个值
默认第二个参数(函数)的第一个参数代表数组的第二个值
查看全部 -
splice会改变原数组
查看全部 -
索引"-1"表示最后一个元素 slice取值是左闭右开
注意最后一个示例里取值索引都是负值
slice不会改变原数组
查看全部 -
if(!Object.create){
Object.create = function(proto){
function F(){};
F.prototype = proto;
return new F;
}
}
注意 new F 会出现一个对象 更重要的是 对象有__proto__ 也就是(next指针) 指针指向F.prototype 也就是传进来的proto 也就实现了对象.__proto__ == proto 其实就是修改了指针的指向 从而形成了新的链表
查看全部 -
这里的缺陷我猜是因为new出来的对象 自身除了prototype外 还有比如挂载在new对象之上的属性和方法 比如this.one = 1 this.fn = function foo(){} 等 这些属性和方法也会"附着"在Student.prototype(视频里)这个对象里面 也就是说Student.prototype里面将不仅仅有__proto__这个属性(指针) 还有其他的"附着"物
查看全部 -
正常啊 因为赋值是引用赋值 修改了的是指向的对象的引用 而不是原指向
就像链表 不能修改指向的这个对象自己的地址 而是应该修改用来指向的那个上级指针(next)指向的地址(哎 懂得自然懂了)
这么说 不修改指针的指向 只是修改指向的内容(还没覆盖第二层的指针) 那么在内存层面 原先是没有改变的 因为新赋予的对象地址可能在银河系之外 所以原先的指向的值没有发生改变
查看全部 -
bind之后返回的函数 没有prototype属性
查看全部 -
这里有意思了 直接建了一个链表 链表的__proto__指向null(NULL) 没有指向Object.prototype对象
查看全部 -
如果从链表去理解 那constructor确实不过是链表内部"非指针"的一个属性"而已"
查看全部 -
再写一点关于函数.prototype.__proto__ 和 函数.__proto__的问题
话说为什么要有 函数.__proto__ 因为函数也是对象 函数自身除了继承Object.prototype里的方法外 也有一些函数自己需要继承的公共方法 那这个方法写在哪里 总不能写在Object.prototype里吧 那样所有的对象就都有函数的方法了 岂不乱套? 所以 函数.prototype.__proto__ 指向的是Object.prototype 这样函数可以继承对象的共有方法 而函数.__proto 指向函数.prototype对象 则可以继承所有函数应有的共有方法
//(这句待定)所有不在(对象/函数)下的__proto__ 会在其prototype里(如果有prototype的话
对象.__proto__(next指针) 指向另一个对象prototype
函数.__proto__(next指针) 直接指向函数.prototype
查看全部 -
继续用C的思想理解JavaScript
这里有Object.create 视频里说过了 是新建一个对象 这个对象有一个___proto__属性 这个属性指向了括号里的对象 再将这个对象赋给"子类"的prototype属性(直接说就是将子类的prototype设置为新创建的对象 这个新创建的对象里面有一个__proto__属性 指向"父类"的prototype)
用c来理解 这里构造了一个节点 节点的next指向父类的prototype对象的首地址 父类的Person.prototype里的__proto__(next)指向谁? Object.prototype 为什么? 因为只有prototype里面有__proto__属性(指针) 其实就是next指针 那这个Object.prototype里的__proto__指向谁(连看都不用看 肯定有__proto__ 就像单链表肯定有next) 指向null呗 因为是最后一个节点 而这个null 和c里的NULL的关系吗.. 嘿嘿
话说typeof null => 'object' <你不知道的JavaScript(上)>第103页 里面说是底层null的二进制值都是0 而在JavaScript中前三位都为0的话会被判定为object类型
而我认为 null就是指针类型 而对象也是指针类型 因为对象就是个指针(也就是地址) c里面的NULL是什么? -> 空指针!!
查看全部 -
ok 我又要开始写东西了..
<你不知道的JavaScript(上)>里的第91页 写道:
在用new调用函数是 会自动执行如下操作:
1.创建(构造)一个全新的对象
3.这个新对象会绑定到函数调用的this
4.如果函数没有返回其他对象, 那么new表达式中的函数调用会自动返回这个新对象
开始YY:
"创建一个新的对象" 新的对象有多大? "绑定到函数调用的this" 其实就是把新"new"出的空间首地址赋给this吧 然后返回这个地址 也就是第四条"会自动返回这个新对象"
查看全部
举报