博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Core Javascirpt] Basic Metaprogramming: Dynamic Method
阅读量:4965 次
发布时间:2019-06-12

本文共 1113 字,大约阅读时间需要 3 分钟。

Somehow it looks like reflect in Java.

For example: We define an mothod on the Object, it called defineMethod(). It accepts two arguements, one is methodName andother is methodBody. 

Read More: 

Using defineProperty() method of Object object to create method.

Object.prototype.defineMethod = function(methodName, methodBody){    Object.defineProperty(this, methodName, {    enumerable: true,    configurable: true,    value: methodBody  });}var dog = {breed: "Shelty"};dog.defineMethod("bark", function(){  return "Woof!";});console.log(dog.breed);console.log(dog.bark());//"Shelty"//"Woof!"

 

More useful case:

function User(){    User.statuses = ["inactive", "active"];  _.each(User.statuses, function(status){    this.defineMethod("is"+status.capitalize(), function(){      return this.status == status;    })  }, this);}var user = new User();user.status = "active";console.log(user.isActive());console.log(user.isInactive());//isActive() and isInactive() methods are created dynamcally during the running time.

Library: lodash  and active-support.js

Read more: 

转载于:https://www.cnblogs.com/Answer1215/p/4017824.html

你可能感兴趣的文章
01背包变形
查看>>
iOS中判断两个圆是否重叠
查看>>
树莓派 Raspberry Pi 与 micro:bit起手式
查看>>
Aspose.Cells 导出指定格式项目(金额、数字、文本)
查看>>
为UIView视图切换添加动画效果
查看>>
微信小程序开发---小程序提供的能力和常用API---5
查看>>
学习mvc3网站
查看>>
ios 开发 谓词详解
查看>>
MySQL 还原
查看>>
maven的pom.xml文件标签含义
查看>>
SPFile的使用
查看>>
boost::thread 线程锁
查看>>
init-param和context-param 中获取数据的一个问题
查看>>
高性能分布式计算与存储系统设计概要(下篇)
查看>>
案例------冒泡排序
查看>>
Hexo中添加emoji表情
查看>>
setsocketopt() usage
查看>>
Xml处理工具类(Jdom)
查看>>
返回文件路径中的想要的值
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>