js中this的使用与代码编写
我们在写一个方法的时候,总是会用到一个关键字this
,而this
的指向就是我们这里所说的执行上下文(执行环境)
首先我们要知道,this
指向的永远是调用该方法的对象
function func () {
this.a = 1;
console.log(this.a);
}
func(); // 1
代码中方法执行后控制台输出1
,由于func
是全局对象window
下的一个方法,那么调用该方法的对象就应该是全局对象window
,所以this
理论上指向的对象就应该是window
如果理论成立,而this.a==1
,也就是说变量a
是一个全局变量。在控制台上直接输入a
或window.a
后回车,会发现输出了1
,所以在func
这个方法中,this
的指向就是window
var person = {
name: 'xiao ming',
age: 18,
who: function () {
console.log( 'my name is ' + this.name + ' , ' + this.age + ' years old' );
console.log( person === this);
}
}
person.who();
上面这段代码中who
方法是person
对象的一个属性,被person
对象调用,所以this
的指向也就是person
通过this实现全选全不选
网址
$("#all").change(function() {
if ($(this).attr("checked")) {
$(".Item").each(function() {
$(this).attr("checked", true);
});
} else {
$(".Item").each(function() {
$(this).attr("checked", false);
});
}
})
this可以重写'父类'的方法
var EditView = function(){
var _this = null;
var $id = null;
var key = null;
var $submit_form = $("#submit_form");
var $url = "notification/notificationtype";
var type = null;
var $add = null;
var $getById = null;
var $upd = null;
this.url = null;
this.dicurl = "system/dic/getDicByCode/";
this.uploadUrl = getUploadUrl();
this.createCusView = null;
this.getMainData = null;
this.init = function(){
if(parent.$("#addwind_frame").contents().length>0){
$id = $("#cntenIdKey",parent.$("#addwind_frame").parent().parent().parent()).val();
$url = $("#cntenUrl",parent.$("#addwind_frame").parent().parent().parent()).val();
$upd = $("#cntenUpd",parent.$("#addwind_frame").parent().parent().parent()).val();
$add = $("#cntenAdd",parent.$("#addwind_frame").parent().parent().parent()).val();
$getById = $("#cntenById",parent.$("#addwind_frame").parent().parent().parent()).val();
}else if(parent.$("#editwind_frame").contents().length>0) {
$id = $("#cntenIdKey",parent.$("#editwind_frame").parent().parent().parent()).val();
$url = $("#cntenUrl",parent.$("#editwind_frame").parent().parent().parent()).val();
$upd = $("#cntenUpd",parent.$("#editwind_frame").parent().parent().parent()).val();
$add = $("#cntenAdd",parent.$("#editwind_frame").parent().parent().parent()).val();
$getById = $("#cntenById",parent.$("#editwind_frame").parent().parent().parent()).val();
}else{
$id = $("#cntenIdKey",parent.$("#redwind_frame").parent().parent().parent()).val();
$url = $("#cntenUrl",parent.$("#redwind_frame").parent().parent().parent()).val();
$upd = $("#cntenUpd",parent.$("#redwind_frame").parent().parent().parent()).val();
$add = $("#cntenAdd",parent.$("#redwind_frame").parent().parent().parent()).val();
$getById = $("#cntenById",parent.$("#redwind_frame").parent().parent().parent()).val();
}
key = $.util.request[$id];
type = $.util.request["type"];
_this = this;
$Core.OnPageLoad(function () {
$Core.Loading.HidePageLoading();
});
if (key&&key!="") {
var url = $url+"/getById/" + key;
if($getById != null && $getById != "" && $getById != "null"){
url = $getById+"/"+key;
}
$.get(url, function (data) {
_this.getMainData = data;
$submit_form.form("load", data.data);
if(type=="red"){
$submit_form.form("load", data.data);
$("input").attr("readonly", "readonly");
$(".easyui-combobox").combo('readonly', true);
$(".easyui-combotree").combotree('readonly', true);
$('.easyui-textbox').textbox('readonly');
$(".easyui-my97").my97('disable');
$("#btnSave").hide();
$("button").hide();
/*$("input",$submit_form).each(function(i,n) {
$(n).textbox('disable');
});*/
}
if(type != "add" && _this.renderSelectors){
for(var i=0,len=_this.renderSelectors.length; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?