资讯专栏INFORMATION COLUMN

20190808-前端笔记-自己写一个new方法

ninefive / 1537人阅读

摘要:先贴一下代码利用方法继承原型链创建一个新对象,使用现有对象来提供新创建的对象的参数必须,标示新建对象的原型链,可选,添加到新建对象的可枚举属性。即自己的属性在制定原型对象上添加属性后的对象。将新对象引入的方法中,顺便带入参数。

先贴一下代码

      let cat = function(sex, language) {
        this.sex = sex
        this.language = language
      }

      cat.prototype.say = function() {
        console.log(this.language)
      }
      cat.prototype.getSex = function() {
        console.log(`my sex is ${this.sex}`)
      }
      
      function _new(fn, ...args) {
        const obj = Object.create(fn.prototype)
        const ret = fn.apply(obj, args)
        return ret instanceof Object ? ret : obj
      }

      let mao = _new(cat, "female", "miao")
1.利用Object.create方法fn继承prototype原型链 Object.create(proto, [propertiesObject])
创建一个新对象,使用现有对象来提供新创建的对象的proto

参数

proto:必须,标示新建对象的原型链,

propertiesObject : 可选,添加到新建对象的可枚举属性。即自己的属性

return

在制定原型对象上添加属性后的对象。

// 创建一个以另一个空对象为原型,且拥有一个属性p的对象
o = Object.create({}, { p: { value: 42 } })

// 省略了的属性特性默认为false,所以属性p是不可写,不可枚举,不可配置的:
o.p = 24
// 不可以写,不可以配置,依旧是42
o.p
//42

o.q = 12
for (var prop in o) {
   console.log(prop)
}
//"q",无法获取p,因为该属性是无法枚举也是不可以写的。

delete o.p
//false
2.将obj新对象引入fn的方法中,顺便带入argments参数。 3.返回对象。 instanceof
ret instanceof Object
ret的原型是否在Object的原型链中

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106542.html

相关文章

  • Koa源码阅读笔记(3) -- 服务器の启动与请求处理

    摘要:本笔记共四篇源码阅读笔记源码阅读笔记源码阅读笔记服务器启动与请求处理源码阅读笔记对象起因前两天阅读了的基础,和中间件的基础。的前端乐园原文链接源码阅读笔记服务器启动与请求处理 本笔记共四篇Koa源码阅读笔记(1) -- coKoa源码阅读笔记(2) -- composeKoa源码阅读笔记(3) -- 服务器の启动与请求处理Koa源码阅读笔记(4) -- ctx对象 起因 前两天阅读了K...

    mrcode 评论0 收藏0
  • js笔记系列之--时间及时间戳

    摘要:入门系列之时间及时间戳时间及时间戳时间及时间戳是里面很常见的一个概念,在我们写前端页面的时候,经常会遇到需要获取当前时间的情况,所以,了解中的时间概念非常重要。 js入门系列之 时间及时间戳 时间及时间戳 时间及时间戳是js里面很常见的一个概念,在我们写前端页面的时候,经常会遇到需要获取当前时间的情况,所以,了解js中的时间概念非常重要。而时间戳是指格林威治时间1970年01月0...

    wapeyang 评论0 收藏0
  • js笔记系列之--时间及时间戳

    摘要:入门系列之时间及时间戳时间及时间戳时间及时间戳是里面很常见的一个概念,在我们写前端页面的时候,经常会遇到需要获取当前时间的情况,所以,了解中的时间概念非常重要。 js入门系列之 时间及时间戳 时间及时间戳 时间及时间戳是js里面很常见的一个概念,在我们写前端页面的时候,经常会遇到需要获取当前时间的情况,所以,了解js中的时间概念非常重要。而时间戳是指格林威治时间1970年01月0...

    paulli3 评论0 收藏0
  • Koa源码阅读笔记(4) -- ctx对象

    摘要:本笔记共四篇源码阅读笔记源码阅读笔记源码阅读笔记服务器启动与请求处理源码阅读笔记对象起因前两天终于把自己一直想读的源代码读了一遍。首先放上关键的源代码在上一篇源码阅读笔记服务器启动与请求处理中,我们已经分析了的作用。 本笔记共四篇Koa源码阅读笔记(1) -- coKoa源码阅读笔记(2) -- composeKoa源码阅读笔记(3) -- 服务器の启动与请求处理Koa源码阅读笔记(4...

    ityouknow 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<