夺命雷公狗---javascript NO:23 JavaScript中的this指针

1、自定义类中的this指针

在php中,我们在自定义类时,属性都是预定义在我们的自定义类中,而在JavaScript代码中,所有对象的属性和方法都是动态添加到对象中,那么可不可以让我们的自定义对象自动拥有类的属性和方法?

答:可以,通过this指针

例1:谁实例化自定义类,那么类中的this就指向谁

<!DOCTYPE html>
<html>
<head>
<meta charset=’utf-8′>
<title></title>
</head>
<body>
<script>
function Person(){
this.name = ‘lisi‘;
this.age = 23;
}
var p1 = new Person();
alert(p1.name);
alert(p1.age);
</script>
</body>
</html>

例2:当我们创建第二个对象,会不会自动拥有name和age属性

<!DOCTYPE html>
<html>
<head>
<meta charset=’utf-8′>
<title></title>
</head>
<body>
<script>
function Person(){
this.name = ‘lisi‘;
this.age = 23;
}
var p1 = new Person();
var p2 = new Person();
alert(p1.name);
alert(p2.age);
</script>
</body>
</html>

例3:以上代码可以实现自定义对象自动拥有类中属性和方法,但是其违背事务逻辑,所有的自定义对象拥有的name和age属性都是一样的,改进上题:

<!DOCTYPE html>
<html>
<head>
<meta charset=’utf-8′>
<title></title>
</head>
<body>
<script>
function Person(name,age){
this.name = name;
this.age = age;
}
var p1 = new Person(‘zhangsan’,22);
var p2 = new Person(‘lisi’,’23’);
alert(p1.name);
alert(p2.age);
</script>
</body>
</html>

注:在我们的JavaScript代码中,函数的形参是不能设置默认值的,以下情况是不允许的(错误的)

<!DOCTYPE html>
<html>
<head>
<meta charset=’utf-8′>
<title></title>
</head>
<body>
<script>
function Person(name,age=23){
this.name = name;
this.age = age;
}
var p1 = new Person(‘zhangsan’,22);
var p2 = new Person(‘lisi’,’23’);
alert(p1.name);
alert(p2.age);
</script>
</body>
</html>

2、深入理解this指针

结论:在我们的JavaScript全局作用域中,也是存在this指针的,其指向Window对象

验证以上结论:

例1:尝试理解下面两条语句:

i=10;
alert(this.i); //this->window==window.i    10

例2:

function test(){
this.i=100;
}
i=10;
test();
alert(this.i); //100

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset=’utf-8′>
<title></title>
</head>
<body>
<script>
function test(){
this.i = 100;
}
i = 10;
test();
alert(this.i);//100
</script>
</body>
</html>

例3:

var i=100;
function test(){
i=200;
}
test()
alert(i);  //200
时间: 2024-10-13 03:10:41

夺命雷公狗---javascript NO:23 JavaScript中的this指针的相关文章

夺命雷公狗---Smarty NO:23 常用方法

assign :分配变量到模板文件(值传递) assignByRef:分配变量到模板文件(引用传递) assignByRef代码示例: $smarty = new Smarty(); $name = ‘lisi'; //$smarty -> assign(‘name’,$name); 值传递相当于把lisi复制一份发送到模板页 $smarty -> assignByRef(‘name’,$name);//引用传递,把$name变量的首地址赋值给模版页 $smarty -> display

夺命雷公狗ThinkPHP项目之----商城8商品品牌管理

本章的主要目标是为了对商品品牌进行CRUD(增删改查)操作. 我们在写的时候就要了解业务逻辑,也就是了解表结构 每个字段代表什么含义,为什么是这个类型的 logo:保存的是图片,一般是分两个途径来保存的, 1.保存图片的本身,保存在目录之下 2.将图片的路径保存到数据表中 我们先创建一个名字为BrandController的控制器,和在view视图里面创建一个Brand的文件夹来进行存放模版文件,如下图所示: 然后将add里面的css和图片路径该下即可代码如下: <!DOCTYPE html P

夺命雷公狗---微信开发60----在线点播电影网2之电影网整体完工

我们上一节课介绍了电影网的核心部分ckplayer播放器,那么我们按照上一节课的基础上来完成这个电影网. 我们先来穿件一个index.html,代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>夺命雷公狗之电影在线点播网</title> <!--宽高禁缩放 --> <meta name="viewpor

夺命雷公狗ThinkPHP项目之----商城10商品属性管理

我们一般做项目前就要分析业务逻辑先,这次也不例外. attr_type:是指属性的类型,有唯一,单选和多选之分 唯一属性,是指用户在购买商品时,可以看到的扩展属性如下图所示: 单选属性,是指用户在购买的时候,不需要选择的扩展属性,否则就无法购买,如下所示: 多选和单选是对应的,但是可以选择多个,但是单选的只能选择一个,否则就无法购买. attr_input_type:是指属性的输入方式,有文本框,下拉列表和文本域之分,如下图所示: attr_value:是指如果属性是下拉形式的,应该提供可选值.

夺命雷公狗---微信开发25----客服消息接口基础和推送语音

按照23课的部署,我们再进行改造下WeChat.class.php文件,将get_token.php的代码封装到WeChat类中去,WeChat.class.php代码如下: <?php class WeChat{ //我把请求内容封装到类里面 protected function http_request($url, $data=null){ //我们使用curl函数 //初始化 $ch = curl_init(); //设置变量 curl_setopt($ch, CURLOPT_URL,$u

夺命雷公狗---微信开发23----客服消息接口基础和推送文本

我们这边课程里面一共用到了三个文件,分别是WeChat.class.php和common.php以及index.php 我们在写这个功能之前也要学会查手册,手册我们可以在微信开发这里找到,如下所示: 点击进去后我们将会看到客服接口,我们可以点击下进去看看里面有什么动动 这里有一个发送文本消息的,我们点击进去看下 这里很明显就看到文本消息是通过一个json数据来进行实现的,废话不多说,开工 这里我们先来写一个WeChat.php的文件,这里作用主要适用于封装一个CURL上传类的,代码如下所示: <

夺命雷公狗---微信开发47----获取用户地理位置接口(2)

我们现在要做的是查找距离最近的“肯德基”,我们需要通过百度提供的LBS云服务定位距离您最近的肯德基,该程序需要到LBS后台进行相关设置,然后在完成程序 用户在客户端输入“肯德基”公众号就会自动回复距离用户最近的”肯德基“ 废话不多说,我们先到http://developer.baidu.com/里面找到LBS云------再到服务接口--------再到LBS云,如下图所示: 点击进来后,我们首先要获取一个密钥, 然后出了红色框部分填下数据即可,别的地方都不用改,直接提交即可 上面的0.0.0.

2016-08-20--回忆了下当年的夺命雷公狗(一)

今天感觉头有点疼,也许昨晚5点才睡,今天8点多就起床的原因吧.. 早些时候躺在床上休息了一会想起了很多当年在“黑客”圈子里面的回忆.. 那时候大概是在06年左右吧,我第一次感受到黑客给我带来的震撼敢.. 那时候记得小弟还在读初中,那时候在网吧里上网,(未成年...) 那时候记得腾讯里面刚在推广一款网络产品(QQ宠物).. 记得那时候要拿个木锤子砸金蛋,如果运气好点就会砸出一个宠物.. 也许本人比较背,,,,, 连续砸了一个多星期都没砸出..... 但是在某一天看到有人加了我的QQ,他给我来句“您

夺命雷公狗—angularjs—6—单条数据的遍历

我们在实际的工作中常常会处理到一些数据的遍历,这些数据都是后端传到前端的,有些公司会让前端帮忙处理一点遍历的工作,废话不多说,直接上代: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href=&q

夺命雷公狗—玩转SEO---56---query需求分析与搜索意图研究

做排名4大核心因素: 域名 页面质量 链接 用户行为 我们需要了解什么是query: 我们直接百度一个词,然后F12键盘,进入审查的界面然后进入network,然后找一个jQuery的反馈,如下所示: 他木有出来,然后点击一下清理按钮,然后鼠标再放到输入框中即可见到,如下所示: 然后我们将获取到的数据保存出来,然后在进行二次编辑: 原本: https://www.baidu.com/sugrec?pre=1&p=3&ie=utf-8&json=1&prod=pc&f