Skip to content
On this page

new做了什么

新我们也可以试着来自己实现一个 new

javascript
function create() {     
  // 创建一个空的对象     
  let obj = new Object()     
  // 获得构造函数     
  let Con = [].shift.call(arguments)     
  // 链接到原型     
  obj.__proto__ = Con.prototype     
  // 绑定 this,执行构造函数     
  let result = Con.apply(obj, arguments)     
  // 确保 new 出来的是个对象     
  return typeof result === 'object' ? result : obj
}

获取元素几何信息

getBoundingClientRect **----**返回一个 DOMRect 对象,其提供了元素的大小及其相对于视口的位置。 clientTop getComputedStyle ----Window.getComputedStyle()方法返回一个对象,该对象在应用活动样式·表并解析这些值可能包含的任何基本计算后报告元素的所有 CSS 属性的值。 私有的 CSS 属性值可以通过对象提供的 API 或通过简单地使用 CSS 属性名称进行索引来访问。 scrollTop offsetTop 当前元素相对于其 offsetParent 元素的顶部内边距的距离。

元素宽度信息

offsetWidth ==> 500 getComputedStyle(HTMLElement, null).getPropertyValue('width') ==> 500px

迭代器

javascript
const obj = {
   // 定义数据
   a: 1,
   b: 2,
   c: 3,
   // 定义迭代器函数
   [Symbol.iterator]: function() {
     // 初始化遍历次数
     let index = 0
     // 获取对象值
     let data = Object.keys(this)
 
     return {
       // 返回遍历函数,每次判断是否已经遍历完成(index是否大于等于长度)
       next(value) {
           return {
             done: index >= data.length,
             value: data[index++]
           }
       }
     }
   }
 }

获取对象的key

image.png

粤ICP备2024285819号