E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
javaScript学习笔记
Javascript学习笔记
之 对象篇(一) : 对象的使用和属性
false.toString();//'false'[1,2,3].toString();//'1,2,3'functionFoo(){}Foo.bar=1;Foo.bar;//1一个经常容易被误解的就是数字常量不能视为对象,实际上数字常量仍然可以视为对象。这是因为Javascript解析器在解析点操作符时而将其视为浮点数特征而犯下的错误。2.toString();//raisesSyntaxEr
·
2019-09-25 01:13
JavaScript学习笔记
整理_简单实现枚举类型,扑克牌应用
如下所示://实现枚举类型,扑克牌应用functioncreatEnum(p){//构造函数varEnumeration=function(){throw'cannotInstantiateEnumerations';};//重写原型并将原型赋值给变量protovarproto=Enumeration.prototype={constructor:Enumeration,toString:func
·
2019-09-24 04:01
JavaScript学习笔记
整理_用于模式匹配的String方法
用于模式匹配的String方法:String支持4种使用正则表达式的方法:seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如果参数不是正则表达式,则首先会通过RexExp构造函数将它转换成正则表达式,seach()方法不支持全局搜索,它忽略修饰符g;replace()用于检索与替换操作,第一个参数是一个正则表达式,第二个参数是要进行替换的字符串。它对
·
2019-09-24 04:01
JavaScript学习笔记
之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
//取得用户代理字符串并全部小写。varua=navigator.userAgent.toLowerCase();document.write(ua);在上篇文章给大家介绍了基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统,感兴趣的朋友可以点击全文了解详情。1、识别呈现引擎引擎主要包含四种:IE、Gecko、WebKit、Opera2、识别
·
2019-09-24 00:31
javascript学习笔记
之函数定义
函数声明式functionfunname(参数){...执行的代码}声明式的函数并不会马上执行,需要我们调用才会执行:funname();*分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束。函数表达式varx=function(参数){...执行的代码块};函数表达式定义的函数,实际上也是一个匿名函数(这个函数没有名字,直接存储在变量中)*函数表达式结
·
2019-09-23 22:35
JavaScript学习笔记
之内置对象
JSWindow窗口对象:http://www.w3school.com.cn/js/js_window.asp所有浏览器都支持window对象。它表示浏览器窗口。所有JavaScript全局对象、函数以及变量均自动成为window对象的成员。窗口对象的属性和方法格式:[window.]属性[window.]方法(参数)甚至HTMLDOM的document也是window对象的属性之一:windo
·
2019-09-23 20:47
JavaScript学习笔记
之基础语法
JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括:各种算术运算符、比较运算符、逻辑运算符;ifelse语句、switch语句;for循环、while循环、dowhile循环;标签、break、continue;trycatchthrow语句。可以查看文后的参考链接。后面的内容都是JavaScript中不同的部分。本文先说上面内容中的几个细节不同。1.全等
·
2019-09-23 20:45
Javascript学习笔记
之数组的遍历和 length 属性
尽管数组在Javascript中是对象,但是不建议使用forin循环来遍历数组,实际上,有很多理由来阻止我们对数组使用forin循环。因为forin循环将会枚举原型链上的所有属性,并且唯一阻止的方法是使用hasOwnProperty来判断,这将比普通的for循环要慢不少。遍历为了达到最佳性能来遍历一个数组,最好的方式就是使用经典的for循环。复制代码代码如下:varlist=[1,2,3,4,5,
·
2019-09-23 19:01
Javascript学习笔记
之函数篇(六) : 作用域与命名空间
在之前的介绍中,我们已经知道Javascript没有块级作用,只有函数级作用域。复制代码代码如下:functiontest(){//ascopefor(vari=0;i<10;i++){//notascope//count}console.log(i);//10}Javascript中也没有显示的命名空间,这就意味着一切都定义在全局作用域中。每一次引用一个变量时,Javascript会往上遍历整个
·
2019-09-23 19:00
Javascript学习笔记
之函数篇(四):arguments 对象
每一个Javascript函数都能在自己作用域内访问一个特殊的变量-arguments。这个变量含有一个传递给函数的所有参数的列表。arguments对象不是一个数组。尽管在语法上它跟数组有相同的地方,例如它拥有length属性。但它并不是从Array.prototype继承而来,实际上,它就是一个对象。因此,我们不能直接对arguments使用一些数组的方法,例如push,pop或slice等。
·
2019-09-23 19:00
javascript学习笔记
(五)原型和原型链详解
私有变量和函数在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数。复制代码代码如下:functionTest(){varcolor="blue";//私有变量varfn=function()//私有函数{}}这样在函数对象Test外部无法访问变量color和fn,他们就变成私有的了:复制代码代码如下:varobj=newTest();alert(ob
·
2019-09-23 19:22
javascript学习笔记
(六)数据类型和JSON格式
什么是JSONJSON:JavaScript对象表示法(JavaScriptObjectNotation)。JSON的形式是用大括号“{}”包围起来的项目列表,每一个项目间用逗号(,)分隔,而项目就是用冒号(:)分隔的属性名和属性值。这是典型的字典表示形式,也再次表明javascript里的对象就是字典结构。不管多么复杂的对象,都可以用一句JSON代码来创建并赋值。JSON结构JSON有两种结构j
·
2019-09-23 19:22
javascript学习笔记
(四)function函数部分
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。Jscript支持两种函数:一类是语言内部的函数(如eval()),另一类是自己创建的。在JavaScript函数内部声明的变量(使用var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。函数的调用方式1、普通调用:function
·
2019-09-23 19:31
javascript学习笔记
(二)数组和对象部分
javascript对象部分一:基础部分1.JavaScript中所有变量都是对象,除了两个例外null和undefined。2.Jscript支持四种类型的对象:内部对象、生成的对象、宿主给出的对象(所有BOM和DOM对象都是宿主对象。)以及ActiveX对象(外部组件)。3.MicrosoftJscript提供了11个内部(或“内置”)对象。它们是Array、Boolean、Date、Func
·
2019-09-23 19:28
javascript学习笔记
(一)基础知识
基本概念javascript是一门解释型的语言,浏览器充当解释器。js执行引擎并不是一行一行的执行,而是一段一段的分析执行。延迟脚本HTML4.0.1中定义了defer属性,它的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会延迟到整个页面都解析完毕后再执行。因此,在元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。在XHTML文档中,要把defer属性设置为defer=“
·
2019-09-23 19:28
javascript学习笔记
(七)Ajax和Http状态码
Ajax及其工作原理AJAX是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里使用,并迅速风靡。AJAX是不能跨域的,如需跨域,可以使用document.domain='a.com';或者使用服务器代理,代理XMLHttpRequest文件AJAX是基于现有的Internet标准,并且联合使用它们:XMLHttpRequest对象(异步的与服务器交换数据)JavaScri
·
2019-09-22 17:20
JavaScript学习笔记
第二天
本文简介:这是接上一篇JavaScript第一天笔记:记录了js中重点需要掌握的地方,对于前端工程师来说,描述的比较浅显。需要前端工程师以此为基础去做更多的拓展才行,对于后端工程师来说,文章上的熟练掌握就行了。本文重点:DOM、BOM、location一、事件对象(event)event.Target//获取当前事件的源头event.clientX//获取当前事件发生的横向坐标event.clie
性感的人
·
2019-09-15 14:43
javascript学习笔记
1
1.ECMAScript基本数据类型:Undefined、Null、Bollean、Number、String。2.ECMAScript没有为整数和浮点数值分别定义不同的数据类型,Number类型可用于表示所有数值。3.ECMAScript函数参数是以数组的形式传递的,函数接收到的始终都是这个数组,而不关心数组中包含了哪些参数,如果数组中没有任何元素,无所谓;如果包含多个元素,也没有问题。函数体内
樱怪
·
2019-09-05 20:00
JavaScript学习笔记
1.HTML中的脚本必须位于标签之间。脚本可被放置在HTML页面的和部分中。2.script标签如需在HTML页面中插入JavaScript,请使用script标签。script和/script会告诉JavaScript在何处开始和结束。script和/script之间的代码行包含了JavaScript:3.在head>或者body的JavaScript您可以在HTML文档中放入不限数量的脚本。脚
Joker_xun
·
2019-09-04 21:57
前端开发
JavaScript学习笔记
本系列是之前自己在w3school学习笔记,仅供学习。JS教程JS简介JS实现JS输出JS语句JS注释JS变量JS数据类型JS对象JS函数JS运算符JS比较JSIf...ElseJSSwitchJSForJSWhileJSBreakJS错误JS验证JSHTMLDOMDOM简介DOMHTMLDOMCSSDOM事件DOM节点JS对象JS对象JS数字JS字符串JS日期JS数组JS逻辑JS算数JS正则表达
superxjhw
·
2019-08-20 16:00
JavaScript学习笔记
JavaScript是互联网上最流行的脚本语言JavaScript是可插入HTML页面的编程代码。JavaScript插入HTML页面后,可由所有的现代浏览器执行。HTML中的脚本必须位于与标签之间。脚本可被放置在HTML页面的和部分中。也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。JavaScript输出JavaScript没有任何打印或者输出的函数。JavaScript显
125e591
·
2019-07-30 20:30
编写可维护
javascript学习笔记
5
第十二章浏览器嗅觉12.1User-Agent检测最早的浏览器嗅觉即用户代理(User-Agent)检测,12.2特性检测特性检测不依赖于浏览器例如:if(document.getElementById){//做些什么}例:functionsetAnimation(callback){if(window.requestAnimationFrame){//标准returnrequestAnimati
ChenyiMX
·
2019-07-12 17:50
心得
编写可维护
javascript学习笔记
5
第十二章浏览器嗅觉12.1User-Agent检测最早的浏览器嗅觉即用户代理(User-Agent)检测,12.2特性检测特性检测不依赖于浏览器例如:if(document.getElementById){//做些什么}例:functionsetAnimation(callback){if(window.requestAnimationFrame){//标准returnrequestAnimati
ChenyiMX
·
2019-07-12 17:50
心得
编写可维护
javascript学习笔记
4
第八章避免“空比较”8.1检测原始值对于字符串,typeof返回“string”对于数字,typeof返回“number”对于布尔值,typeof返回“bo'olean”对于undefined,typeof返回“undefined”typeof的基本语法typeofvariable或typeof(variable)8.2检测引用值因为typeofvariable当variable为null时返回的
ChenyiMX
·
2019-07-09 22:29
读后感
编写可维护
javascript学习笔记
4
第八章避免“空比较”8.1检测原始值对于字符串,typeof返回“string”对于数字,typeof返回“number”对于布尔值,typeof返回“bo'olean”对于undefined,typeof返回“undefined”typeof的基本语法typeofvariable或typeof(variable)8.2检测引用值因为typeofvariable当variable为null时返回的
ChenyiMX
·
2019-07-09 22:29
读后感
编写可维护
javascript学习笔记
3
第四章变量,函数和运算符4.1变量声明将所有的变量声明放在函数顶部而不是散落在各个角落4.2函数声明推荐先声明函数,在调用函数函数内部的局部函数应紧接着变量后面声明函数声明应当在条件语句外部使用4.3函数调用间隔调用写法是:在调用函数左边没有空格,这样是为了将它和块语句区分开来4.4立即调用的函数匿名函数可以赋值给变量为了让立即执行的函数能够被一眼看出来,可以将函数同一对原括号包裹出来例:varv
ChenyiMX
·
2019-07-08 22:34
读后感
编写可维护
javascript学习笔记
3
第四章变量,函数和运算符4.1变量声明将所有的变量声明放在函数顶部而不是散落在各个角落4.2函数声明推荐先声明函数,在调用函数函数内部的局部函数应紧接着变量后面声明函数声明应当在条件语句外部使用4.3函数调用间隔调用写法是:在调用函数左边没有空格,这样是为了将它和块语句区分开来4.4立即调用的函数匿名函数可以赋值给变量为了让立即执行的函数能够被一眼看出来,可以将函数同一对原括号包裹出来例:varv
ChenyiMX
·
2019-07-08 22:34
读后感
编写可维护
javascript学习笔记
2
第二章注释2.1单行注释//这是一句注释2.2多行注释/*我的注释*//*注释注释*//**注释*注释*注释*/2.3使用注释当代码不够清晰时注释2.3.1难以理解的代码2.3.2可能被误认为错误的代码2.3.3浏览器特性hack2.4文档注释/***@属性解释属性的文字*@属性解释属性的文字**/第三章语句和表达式3.1花括号的对齐方式例1:if(condition){dosomething()
ChenyiMX
·
2019-07-05 11:10
读后感
编写可维护
javascript学习笔记
2
第二章注释2.1单行注释//这是一句注释2.2多行注释/*我的注释*//*注释注释*//**注释*注释*注释*/2.3使用注释当代码不够清晰时注释2.3.1难以理解的代码2.3.2可能被误认为错误的代码2.3.3浏览器特性hack2.4文档注释/***@属性解释属性的文字*@属性解释属性的文字**/第三章语句和表达式3.1花括号的对齐方式例1:if(condition){dosomething()
ChenyiMX
·
2019-07-05 11:10
读后感
JavaScript学习笔记
(一),js变量、以及函数的调用
一、JavaScript的简介1.简称为js。JScript-------微软的脚本语言。javaScript------网景公司的一个脚本语言。2.javascript和java没有关系。他们是两种编程语言。Java是服务器端的编程语言,js是前端的技术。3.Js的代码可以减轻服务器端的压力。把要执行的一些代码分摊到浏览器上交给js去处理。二、Js的第一个案例js代码要写在html的head里面
大树先生.
·
2019-07-05 09:07
前端技术
JavaWeb入门编程
JavaScript
js的使用
js函数的用法
编写可维护的
javascript学习笔记
1
第一章基本格式化1.1缩进层级推荐用一个指标符或者4个空格为一个缩进层级1.2语句结尾最好不省略,用';'结尾,1.3行的长度一行的长度不超过80个字符1.4换行最好再运算符后面换行,因为ASI机制可能会在某些场景在行结束时加":",将运算符放在行尾会避免这个问题1.5空行在方法之间在方法中的局部变量和第一条语句之间在多行或当行注释之间在方法内的逻辑片段之间插入空行,可提高可读性1.6命名驼峰命名
ChenyiMX
·
2019-06-29 14:01
读后感
编写可维护的
javascript学习笔记
1
第一章基本格式化1.1缩进层级推荐用一个指标符或者4个空格为一个缩进层级1.2语句结尾最好不省略,用';'结尾,1.3行的长度一行的长度不超过80个字符1.4换行最好再运算符后面换行,因为ASI机制可能会在某些场景在行结束时加":",将运算符放在行尾会避免这个问题1.5空行在方法之间在方法中的局部变量和第一条语句之间在多行或当行注释之间在方法内的逻辑片段之间插入空行,可提高可读性1.6命名驼峰命名
ChenyiMX
·
2019-06-29 14:01
读后感
Javascript学习笔记
JavaScriptECMAScript-JavaScript的核心定义了JavaScript的语法规范JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关BOM-浏览器对象模型一套操作浏览器功能的API通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等DOM-文档对象模型一套操作页面元素的APIDOM
澜酒
·
2019-06-28 17:13
javascript
javascript
jQuery
WebApi
JavaScript学习笔记
-----NaN、isNan
NaN/Number.NaN全局属性NaN的值表示不是一个数字(Not-A-Number),NaN属性的初始值就是NaN,和Number.NaN的值一样。在现代浏览器中(ES5中),NaN属性是一个不可配置(non-configurable),不可写(non-writable),不可枚举(non-enumerable)的属性。编码中很少直接使用到NaN。通常都是在计算失败时,作为Math的某个方法
昜木辰deブログ
·
2019-05-17 15:00
JavaScript学习笔记
(阮一峰大神)
个人向的学习记录;大神的js学习网站:网道JavaScript教程变量vara;//undefined a=1; a='hello';//动态类型语言~ 变量提升JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。console.log(b);//在控制台
masami269981
·
2019-05-08 00:00
javascript学习笔记
(五)
/*Date对象*-在JS中使用Date对象来表示一个时间*///创建一个Date对象,执行时封装当前代码的执行时间vard=newDate();//console.log(d);/*创建一个指定时间的对象*需要在构造函数中传递一个表示时间的字符串作为参数*日期格式:月份/日/年时:分:秒*/vard2=newDate("5/12/201911:00:59");//console.log(d2);
dev_winner
·
2019-04-27 15:05
javascript学习笔记
(四)
/**内建对象:*数组也是一个对象*若读取的索引不存在,不会报错而是返回undefined**//*创建一个数组对象,可以往数组中添加元素*若只有一个参数,则表示创建的数组长度*数组中的元素可以是任何数据类型,包括对象,函数*/vararr=newArray(1,"casc");console.log(arr);arr[0]="asa";arr[2]="xasxasxa";arr[4]="cxac
_sign
·
2019-04-26 21:56
Javascript学习笔记
之函数传参
传参参数=js的数据类型:数字、字符串、布尔值、函数、对象、未定义不变的属性用“.”会变的属性用“[]”
mcbrjwdynwmz,nan
·
2019-03-20 15:34
笔记
javascript学习笔记
之用js完成轮播图思路
1首先封装一个animal函数(用来平移用的,里面会传2个参数,第一个是需要平移的element,第二个是需要平移的目标距离)2用小圆圈鼠标放上去的轮播图1.首先HTML中我们用一个div包裹作为相框,div里面包裹ul>li列表,li里面包裹你想进行轮播的图片,(注意文件流移动定位必须position:absolute,还有一个要注意的点是我们移动的是ul,是把ul进行移动,为ul定义样式时的宽
DFting1997
·
2019-03-12 17:11
学习笔记
javascript学习笔记
之用js完成轮播图思路
1首先封装一个animal函数(用来平移用的,里面会传2个参数,第一个是需要平移的element,第二个是需要平移的目标距离)2用小圆圈鼠标放上去的轮播图1.首先HTML中我们用一个div包裹作为相框,div里面包裹ul>li列表,li里面包裹你想进行轮播的图片,(注意文件流移动定位必须position:absolute,还有一个要注意的点是我们移动的是ul,是把ul进行移动,为ul定义样式时的宽
DFting1997
·
2019-03-12 17:11
学习笔记
2019-03-09
JavaScript学习笔记
之JavaScript基础
参考资料:《JavaScript从入门到精通》、《PHP、MySQL与JavaScript学习手册》JavaScript在HTML中的使用在页面中直接嵌入JavaScript代码JavaScript是完全在网页浏览器上运行的客户端脚本语言。在HTML文档中可以使用标记将JavaScript脚本嵌入到其中。JavaScript不以分号结尾,因为在JavaScript中,换行起到了和PHP中分号相同的
NoelleMu
·
2019-03-10 00:42
JavaScript学习笔记
之类型、值和变量
1、JavaScript不区分整数值和浮点数值。JavaScript中的所有数字均用浮点数值表示。由于某些JavaScript的实现支持八进制直接量,而有些不支持,因此最好不要使用以0为前缀的整型直接量。在ECMAScript6的严格模式下,八进制直接量是明令禁止的。2、浮点型直接量:3.142345.789.3333333333336.02e23//6.02X10的23次方1.444444E-3
dongyueleicuilijie
·
2019-03-05 16:44
JavaScript笔记
JavaScript学习笔记
(一)JS的数据类型(1)
修改于2019/3/3:https://biaoyansu.com/12.14增加整数的判断方式Number.isInteger()、整数的转换parseInteger()、浮点数的转化parseFloat()、快速转化string数据类型的一些操作函数null和undefined做了一点修改序一提到JS的数据类型,好像大家都会讲六个数据类型:num、string、boolean、object、u
shadothew
·
2019-02-19 16:03
JavaScript
JavaScript
JavaScript学习笔记
(八)—— 补
第九章最后的补充一、Jquery简单阐述JQuery是一个JavaScript库,旨在减少和简化处理DOM和添加视觉效果的JavaScript代码;使用时必须得添加库路径;学习路径:http://jquery.com/例1:1window.onload=function(){23alert("thepageisloaded!");45}Jqery:1$(document).ready(functi
未名w
·
2019-02-09 17:00
JavaScript学习笔记
(七)—— 再说函数
第八章函数1函数声明和函数表达式差别一:函数声明:函数在执行代码前被创建;函数表达式是在运行阶段执行代码时创建;差别二:函数声明创建一个与函数同名的变量,并让她指向函数;使用函数表达式,不给函数指定名称,因此要么在代码中将函数赋给一个变量,要么以其他方式使用函数表达式;差别三:函数声明不返回指向函数的引用;而是创建一个与函数同名的变量,并将指向函数的引用赋给它;函数表达式返回一个引用,该引用指向函
未名w
·
2019-02-08 22:00
JavaScript学习笔记
(六)—— 异步编码
第七章异步编码1事件处理程序处理程序:即网页加载完毕后将执行的代码,称回调函数或监听器;包含:处理函数+window.onload=函数名;123functionpage(){45alert("I'malive!");67}89window.onload=page;10112响应事件的方式编写代码getElementByTagName返回NodeList对象,表示DOM事件对象的属性:target
未名w
·
2019-02-08 22:00
JavaScript学习笔记
(五)——类型、转换、相等、字符串
第六章类型相等转换等一、类型1typeof();typeof是一个内置的JavaScript运算符,可用于探测其操作数的类型。例:123vartest1="abcdef";//string45vartest2=123;//number67vartest3=true;//boolean89vartest4={};//object1011vartest5=[];//object1213vartest6
未名w
·
2019-02-03 14:00
JavaScript学习笔记
(四)——DOM
第五章网页交互——文本对象模型【Documentobjectmodel】1简单介绍DOM,dom是将html与javascript进行交互的工具。【使用innerHTML时注意:html中的内容是按照HTML本身的先后顺序加载的。故js对应代码应置于html之后】问题:*document.getElementById时,id不存在返回null,存在返回对应字符串;*planet.innerHTML
未名w
·
2019-02-03 11:00
JavaScript学习笔记
1.javascriptjavascript是一种基于对象(object)和事件驱动(EventDriven)并具有安全性能的脚本语言,能与HTML(超文本标记语言)、java脚本语言一起在web页面与web客户交互,无需将数据传给服务器而可以直接由客户端的应用程序处理。2.javascript与C语言区别①变量声明是弱类型,变量使用前无需进行变量数据类型说明,由解释器在运行时检查数据类型。②每条
把子肉爱上热干面
·
2019-01-21 09:00
JavaScript学习笔记
之基于定时器实现图片无缝滚动功能详解
本文实例讲述了
JavaScript学习笔记
之基于定时器实现图片无缝滚动功能。
致Great
·
2019-01-09 10:12
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他