js自实现
js的自实现
new的实现
过程
- 新建一个对象p,把构造函数中的this设置为对象的变量
- 把p的__proto__指向其构造器的原型对象P.prototype
- 如果构造函数中有
返回值,且返回值为对象,则返回该对象
,否者返回新建的对象

代码实现
1 | function Person(name, age) { |
call的实现
思路
- 将函数设置为对象的方法(this的指向为该对象)
- 调用该方法
- 删除该方法
1 | Function.prototype.call2 = function(content = window,...args) { |
apply
思路
同call
实现
1 | Function.prototype.apply2 = function(context = window,args) { |
函数科里化
思路
- 如果传入的参数没有到原函数需要的数量 则继续执行curry函数接收参数
- 如果参数达到了,则执行科里化了的函数
实现
1 | function curry(fn, ...args) { |
JSON.stringfy
思路
转化类型:
- Boolean | Number | String 类型会转换为对应的原始类型
- undefined、任意函数以及symbol,会被忽略(出现在非数组对象的属性值中时),或者被转换成 null(出现在数组中时)
- 不可枚举的属性会被忽略
- 如果一个对象的属性值通过某种间接的方式指回该对象本身,即循环引用,属性也会被忽略。// todo
- 递归/循环
实现
1 | function jsonStringify(obj) { |