js 魔鬼训练
1、Object.assign 偷梁换柱 / 融合
- 将多个对象合并到第一个对象中去。这样一来methods对象中就包含着data对象了。否则this无法正常访问data中的title
var news={
data(){
return {
id:101,
title:"新闻标题"
}
},
methods:{
show()
{
alert(this.title)
}
}
};
Object.assign(news.methods,news.data())
news.methods.show()
2、限制与规则
var God={
version:"1.0",
extends(name,obj) {
if("data" in obj && "methods" in obj && typeof obj.data=="function" && typeof obj.methods=="object" ) {
var getData=obj.data();
if(typeof getData=="object") {
Object.assign(obj.methods,getData);
this[name]=obj;
}
}
}
};
var news={
data () {
return {
id:101,
title:"新闻标题"
}
},
methods:{
show() {
alert(this.title)
}
}
};
God.extends("news",news);
God.news.methods.show()
3、 Object.defineProperty 设置属性为不可枚举
var God={
version:"1.0",
extends(name,obj)
{
this.init();
if("data" in obj && "methods" in obj && typeof obj.data=="function" && typeof obj.methods=="object" )
{
var getData=obj.data();
if(typeof getData=="object")
{
Object.assign(obj.methods,getData,this);//把传入对象的Data 合并进入对象的methods
this[name]=obj; //给GOD对象设置一个属性 (根据参数和参数值)
}
}
},
init() //初始化
{
Object.defineProperty(this,"init",{
enumerable:false //设置属性为不可枚举
})
Object.defineProperty(this,"extends",{
enumerable:false
})
var keys=Object.keys(this);
this.$global={};
keys.forEach((key)=>{
this.$global[key]=this[key];
});
}
};
js 魔鬼训练的更多相关文章
- codefordream 关于js中级训练
中级训练接着就紧锣密鼓的开始了. 首先是关于变量,变量的作用是给一个数据值标注名称. 注:JavaScript中变量名,函数名,参数名的命名规范:至少由字母,下划线,美元符号,数字其中的一种组成,但不 ...
- codefordream 关于js初级训练
这里的初级训练相对简单,差不多都是以前知识温习. 比如输出“hello world”,直接使用console.log()就行.注释符号,“//”可以注释单行,快捷键 alt+/,"/* ...
- php 魔鬼训练
环境配置 找到自己的[系统命令行]目录:bin /usr/bin #mac系统 /bin #ubuntu系统 再找到Php的编译器,这个根据你的安装路径来判断,mac默认的路径如下 cd /usr/b ...
- 接下来一段时间会对大家进行网络通信的魔鬼训练-理解socket
引子 下一篇标题是<深入理解MQ生产端的底层通信过程>,建议文章读完之前.或者读完之后,再读一遍我之前写的<RabbitMQ设计原理解析>,结合理解一下. 我大学时流行过一个韩 ...
- p90x 涵盖了全部方式的健身方式美国经典训练DVD
http://baike.baidu.com/view/2602721.htm p90x是美国经典训练DVD, 涵盖了全部方式的健身方式13张Beachbody P90X DVD全集,90天魔鬼训练 ...
- 三分钟快速上手TensorFlow 2.0 (下)——模型的部署 、大规模训练、加速
前文:三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署 TensorFlow 模型导出 使用 SavedModel 完整导出模型 不仅包含参数的权值,还包含计算的流程(即计算 ...
- 一些JS库汇总
作者:wlove 链接:https://www.zhihu.com/question/429436558/answer/2348777302 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...
- 洛谷 题解 P3984 【高兴的津津】
潇洒の开始 大水题一枚/小声说话 先吐槽一下: 为什么津津经历了魔鬼训练就可以Au日常QWQ,人家也是早起晚睡的好吧 (谁说魔鬼训练就一定是早起晚睡的) 思路 津津的高兴是持续m天的,但是一旦在这m中 ...
- Java Web 笔记(1)
JavaWeb 学习笔记,狂神说java,链接:https://www.bilibili.com/video/av68833391 Java Web 1.基本概念 1.1.前言 web开发: web, ...
随机推荐
- linux 部分命令简单使用介绍-ssh、scp、less、tail、find、grep(持续添加)
ssh 加密的网络协议,提供客户-服务模式. 登录 ssh username@ip ssh ip #不提供用 ...
- Chrome调试(转)
原文地址:http://blog.csdn.net/chenmoquan/article/details/44943245#comments 觉得写的很适合web开发的新手 Chrome 的开发者工具 ...
- Android 学习手札(备注)
1.在Android 应用程序中不能使用System.out.println(..)来输出信息,而要使用Log类中的静态方法输出调试信息. Log.d("onStart", &qu ...
- spring Mvc json返回json的日期格式问题
(一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加ja ...
- 简单概述 .NET Framework 各版本区别
目前已发行的版本有1.0.1.1.2.0.3.0.3.5.4.0.4.5(及4.5.1.4.5.2).4.6(及4.6.1). 1.0版本:最初的.net framework版本,作为一个独立的工具包 ...
- 简单的html5 File base64 图片上传
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- TatukGIS - GisDefs - DateTimeToXMLString 函数
函数名称 DateTimeToXMLString 所在单元 GisDefs 函数原型 function DateTimeToXMLString(_dtm: TDateTime; ...
- IOS各类问题
1.The resource could not be loaded because the App Transport Security policy requires the use of a s ...
- Laravel框架——自己写的类找不到
composer.json my model files are stored in directory of app\models, therefor "autoload": { ...
- objective-c 错题
//1, NSString *name = [[NSString alloc]initWithString:@"张三"]; NSLog(@"%d",[name ...