JS手写New操作符

JavaScript07

JS手写New操作符,第1张

手写new操作符的流程:

 // 1.定义一个空对象

 // 2.隐式原型指向构造函数的显式原型

// 3.执行构造函数,this指向空对象

 // 4.返回对象

function myNew(fn,...args){

        // 1.定义一个空对象

          const obj={}

         // 2.隐式原型指向构造函数的显式原型

         obj._proto_=fn.prototype

         // 3.执行构造函数,this指向空对象

        fn.apply(obj,args)

          // 4.返回对象

        return obj

        }

先说一下浅拷贝的实现方式

ES6 中 Object 的一方法,可以是来合并多个JS对象(能用来实现浅拷贝)

第一个参数拷贝的目标对象,后面的参数是拷贝的来源对象

利用扩展运算法,可以实现浅拷贝的的功能。

手写浅拷贝的思路:

将一个对象从内存中完整的拷贝出来给目标独对象,并新开辟一个全新的内存空间存放对象,新对象的修改并不会改变原对象,实现真正的分离。

最简单的深拷贝的方法,就是把一个对象序列化成为 JSON 的字符串,并将对象里面的内容转成字符串,最后用 JSON.parse() 将 JSON 字符串生成一个新的对象。

但是 JSON.stringify 实现深拷贝有些地方需要注意:

这只是简版的,利用递归的方式实现深拷贝,同 JSON.stringify 效果一样,还是有些问题没有解决

即使修改 obj.data 下的属性,也是跟之前的没有关系

用css控制鼠标样式的语法如下:

<span style="cursor:*">文本或其它页面元素</span>

把 * 换成如下15个效果的一种:

下面是对这15种效果的解释。移动鼠标到解释上面,看看你的鼠标起了什么变化吧!

hand是手型

pointer也是手型,这里推荐使用这种,因为这可以在多种浏览器下使用。

crosshair是十字型

text是移动到文本上的那种效果

wait是等待的那种效果

default是默认效果

help是问号

e-resize是向右的箭头

ne-resize是向右上的箭头

n-resize是向上的箭头

nw-resize是向左上的箭头

w-resize是向左的箭头

sw-resize是左下的箭头

s-resize是向下的箭头

se-resize是向右下的箭头

auto是由系统自动给出效果