js方法中的this
比如有个function:
function ServiceMy(services) {
//存放this,用于调试用
var tmp_this = this;
this.services = [];
console.log(typeof this);
console.log(this.__proto__.constructor.name);
console.log(this.services == services);
console.log(services);
console.log(this.services);
/**
注意myLog和myLog2这两个function的区别,myLog是全局的,
即在window下定义了一个方法,方法名为myLog,所以即使在ServiceMy()外部也可以直接调用myLog()方法
而myLog2这个方法实际上是在ServiceMy定义了一个属性,这个属性又是一个方法,
相当于window.ServiceMy.myLog2=function(){},所以只能在ServiceMy内部调用,
在ServiceMy这个方法内部,this就代表ServiceMy本身,所以在ServiceMy内部调用内部写好的方法可以使用"this."
的形式进行访问调用。
最终效果可以表示为:
window.myLog = function(){};
window.ServiceMy.myLog2 = function(){} ,这两者的差异一目了然
*/
myLog = function(msg) {
alert("myLog:" + msg);
// console.log("控制台:"+msg);
}
this.myLog2 = function(msg) {
alert("myLog2:" + msg);
}
this.appendServices = function(services) {
if (!services) {
return this;
}
//存放 appendServices方法的入参
var tmp_services = services;
if (!$.isArray(tmp_services)) {
tmp_services = [tmp_services];
}
//循环入参
for (index in tmp_services) {
if (!tmp_services[index].serviceId || !tmp_services[index].method) {
alert('服务定义的入参必须有serviceId和method');
return;
}
if (tmp_services[index].parameters) {
if (typeof tmp_services[index].parameters != 'object' || $.isArray(tmp_services[index].parameters)) {
alert('服务定义的参数必须是map形式!');
return;
}
}
}
};
//在外部 如果用new的形式构造出一个ServiceMy对象,如果new的时候有参数,那么就调用ServiceMy.appendServices(para)方法
if (services) {
this.appendServices(services);
myLog('heihi=id');
}
this.appendProc = function(proc) {
if (!proc) {
return this;
}
tmp_proc = proc;
if (!$.isArray(tmp_proc)) {
// tmp_proc = [tmp_proc];
}
procedure_ = []; //用于存放取出来的数组元素的
for (var index in tmp_proc) {
procedure = tmp_proc[index];
if (!procedure.procName) {
console.log('你没有传入过程名');
// alert('你没有传入过程名');
// return false;
return this;
}
if (!procedure.parameters) {
console.log('你没有传入存储过程需要的参数');
// return false;
// alert('你没有传入存储过程需要的参数');
return this;
}
procedure_.push(procedure);
}
}
}
一个function ServiceMy()的内部的this,就代表这个function本身,具体可以看上面js代码关于myLog和myLog2的注释说明。
关于myLog和myLog2的注释说明:
注意myLog和myLog2这两个function的区别,myLog是全局的,
即在window下定义了一个方法,方法名为myLog,所以即使在ServiceMy()外部也可以直接调用myLog()方法
而myLog2这个方法实际上是在ServiceMy定义了一个属性,这个属性又是一个方法,
相当于window.ServiceMy.myLog2=function(){},所以只能在ServiceMy内部调用,
在ServiceMy这个方法内部,this就代表ServiceMy本身,所以在ServiceMy内部调用内部写好的方法可以使用"this."
的形式进行访问调用。
最终效果可以表示为:
window.myLog = function(){};
window.ServiceMy.myLog2 = function(){} ,这两者的差异一目了然
具体代码:
js方法中的this的更多相关文章
- 解决webkit浏览器中js方法中使用window.event提示未定义的问题
这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- 在JS方法中返回多个值的三种方法
在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现: 1 使用数组的方式,如下: <html> <head> <title> ...
- 在JS方法中返回多个值的三种方法(转载)
来源:https://www.cnblogs.com/gxsyj/p/6004574.html 在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现: 1 使用数 ...
- js方法中参数传过来的值包含括号
前提,传递的id为变量值,比如从后台获取数据循环,在每个循环里调用shenpi()方法,假设传的id包含括号,例如 20190329100833(更正) 这样的数据,那么直接调用会报错,控制台会报错: ...
- 【js】js方法中直接跳转到servlet
function firm_back_state(id,name){ if(confirm("确认返单?")){ location.href="Edit_OrderSer ...
- js方法中拼接html时点击事件中拼接字符串参数
1,代码 var html = '<a href="#" onclick="tableDelete(\''+ row.labelid +'\')"> ...
- tp5模板中js方法中url函数传参的解决办法
代码如下: layer.msg(data.msg, {icon: 1,time:1500,shade: 0.1}, function(index){ layer.close(index); var s ...
- C#后台程序与HTML页面中JS方法互调(功能类似于Ajax中的DWR)
此方法适用于 C#中嵌入WebBrowser(浏览器) 通过浏览器中加载的页面与C#的后台代码进行交互. 一.C#程序 1.在C#窗体中添加WebBrowser(浏览器),将页面的URL添加到浏览器中 ...
随机推荐
- 原理图产生网络表后导进PADS之后,网络乱了的问题
问题描述:在Orcad中生成的网络表(格式.ASC),导进PADS9.2中(PADS9.2中已有一些元器件),结果报Mixing nets,如下图示. 仔细检查原理图中的这些nets,发现有的有错,有 ...
- PCB板常用知识简介——沉金板VS镀金板
一.PCB板表面处理: 抗氧化,喷锡,无铅喷锡,沉金,沉锡,沉银,镀硬金,全板镀金,金手指,镍钯金 OSP: 成本较底,可焊性好,存储条件苛刻,时间短,环保工艺.焊接好 .平整 . 喷锡:喷锡板一般 ...
- Javascript 思维导图
学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出8张javascript相关的思维导图. 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又 ...
- API各函数作用简介
API各函数作用简介 1.控件与消息函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeI ...
- tp中phpexcel导出实例
public function phpexcel(){ //测试$this->display("User:xx");//跨模块分配页面User模块xx.html // xx\ ...
- Google Maps 学习笔记(一)2014.06.04
1.<body onload="加载地图的函数" onunload="GUnload()"> 2.new GMap2(container,opts) ...
- js兼容性大全
js有个第二定律好的属性/选择器一定不兼容/* 获取类名通用代码*/function getClassName(){ if(document.getElementsByClassName){ doso ...
- ACM比赛
Description A soldier wants to buy w bananas in the shop. He has to pay k dollars for the first bana ...
- linux下安卓编译apk环境搭建
ubuntu下linux安卓编译环境搭建. 配置好编译环境 (前提是已经安装了jdk,可以用java -verison 命令查看) 一.设置环境变量 用vi ~/.bashrc 打开编译环境 JA ...
- POJ 3461 Oulipo(模式串在主串中出现的次数)
题目链接:http://poj.org/problem?id=3461 题意:给你两个字符串word和text,求出word在text中出现的次数 思路:kmp算法的简单应用,遍历一遍text字符串即 ...