当前位置:首页 » 网页前端 » 前端函数参数为this
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端函数参数为this

发布时间: 2022-06-17 16:30:04

① js的函数参数列表传入this啥意思比如tset1(this);_>啥意思

把当前对象(也就是input)传递到test4函数中,这样test4就可以直接对这个对象进行操作了,而不需要再通过复杂繁琐的过程在页面上定位目标对象。

② 如何理解JavaScript中的caller,callee,call,apply 前端设计

在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments
Arguments —— 该对象代表正在执行的函数和调用它的函数的参数。
[function.]arguments[n]
参数
function :选项。当前正在执行的 Function 对象的名字。
n :选项。要传递给 Function 对象的从0开始的参数值索引。

说明
Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。
还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments 对象。
arguments 对象只有函数开始时才可用。
下边例子详细说明了这些性质:

//arguments 对象的用法。
function ArgTest(a, b){
var i, s = "The ArgTest function expected ";
var numargs = arguments.length; // 获取被传递参数的数值。
var expargs = ArgTest.length; // 获取期望参数的数值。
if (expargs < 2)
s += expargs + " argument. ";
else
s += expargs + " arguments. ";
if (numargs < 2)
s += numargs + " was passed.";
else
s += numargs + " were passed.";
s += "\n\n"
for (i =0 ; i < numargs; i++){ // 获取参数内容。
s += " Arg " + i + " = " + arguments[i] + "\n";
}
return(s); // 返回参数列表。
}
在此添加了一个说明arguments不是数组(Array类)的代码:
Array.prototype.selfvalue = 1;
alert(new Array().selfvalue);
function testAguments(){
alert(arguments.selfvalue);
}
运行代码你会发现第一个alert显示1,这表示数组对象拥有selfvalue属性,值为1,而当你调用函数testAguments时,你会发现显示的是“undefined”,说明了不是arguments的属性,即arguments并不是一个数组对象。

现在开始caller,callee,call,apply:
caller:返回一个对函数的引用,该函数调用了当前函数。
functionName.caller functionName 对象是所执行函数的名称。

说明
对于函数来说,caller属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller 包含的就是 null 。
如果在字符串上下文中使用 caller 属性,那么结果和functionName.toString 一样,也就是说,显示的是函数的反编译文本。
下面的例子说明了 caller 属性的用法:
// caller demo {
function callerDemo() {
if (callerDemo.caller) {
var a= callerDemo.caller.toString();
alert(a);
} else {
alert("this is a top function");
}
}
function handleCaller() {
callerDemo();
}
//输出结果:
function handleCaller() {
callerDemo();
}

callee —— 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
[function.]arguments.callee
可选项 function 参数是当前正在执行的 Function对象的名称。

说明
callee属性的初始值就是正被执行的 Function 对象。
callee属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名
函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性
仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候
用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是
形参长度,由此可以判断调用时形参长度是否和实参长度一致。
示例
//callee可以打印其本身
function calleeDemo() {
alert(arguments.callee);
}
//用于验证参数
function calleeLengthDemo(arg1, arg2) {
if (arguments.length==arguments.callee.length) {
window.alert("验证形参和实参长度正确!");
return;
} else {
alert("实参长度:" +arguments.length);
alert("形参长度: " +arguments.callee.length);
}
}
//递归计算
var sum = function(n){
if (n <= 0)
return 1;
else
return n +arguments.callee(n - 1)
}
比较一般的递归函数:
var sum = function(n){
if (1==n) return 1;
elsereturn n + sum (n-1);
调用时:alert(sum(100));
其中函数内部包含了对sum自身的引用,函数名仅仅是一个变量名,在函数内部调用sum即相当于调用一个全局变量,不能很好的体现出是调用自身,这时使用callee会是一个比较好的方法。

apply and call:它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别:
apply(thisArg,argArray);
call(thisArg[,arg1,arg2…] ]);
即所有函数内部的this指针都会被赋值为thisArg,这可实现将函数作为另外一个对象的方法运行的目的

apply的说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisArg任何一个参数,那么 Global 对象将被用作 thisArg,
并且无法被传递任何参数。

call的说明:
call方法可将一个函数的对象上下文从初始的上下文改变为由 thisArg指定的新对象。
如果没有提供 thisArg参数,那么 Global 对象被用作 thisArg
相关技巧:
应用call和apply还有一个技巧在里面,就是用call和apply应用另一个函数(类)以后,当前的函数(类)就具备了另一个函数(类)的方法或者是属性,这也可以称之为“继承”。
看下面示例:
// 继承的演示
function base() {
this.member = " dnnsun_Member";
this.method = function() {
window.alert(this.member);
}
}
function extend() {
base.call(this);
window.alert(member);
window.alert(this.method);
}

上面的例子可以看出,通过call之后,extend可以继承到base的方法和属性。
顺便提一下,在javascript框架prototype里就使用apply来创建一个定义类的模式,
其实现代码如下:
var Class = {
create: function() {
returnfunction() {
this.initialize.apply(this, arguments);
}
}
}
解析:从代码看,该对象仅包含一个方法:Create,其返回一个函数,即类。但这也同时是类的
构造函数,其中调用initialize,而这个方法是在类创建时定义的初始化函数。通过如此途径,
就可以实现prototype中的类创建模式
示例:
var vehicle=Class.create();
vehicle.prototype.initialize= function(type)
{
this.type=type;
}
vehicle.prototype.showSelf= function()
{
alert("this vehicle is "+ this.type);
}

var moto=new vehicle("Moto");
moto.showSelf();

你自己看看吧,此文章转自:http://www.cnblogs.com/ghost-draw-sign/articles/1530108.html

③ this作为方法参数什么含义

java中的this随处可见,用法也多,现在整理有几点:

1. this是指当前对象自己。
当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:
public class Hello {
String s = "Hello";

public Hello(String s) {
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}

public static void main(String[] args) {
Hello x = new Hello("HelloWorld!");
}
}
运行结果:
s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
在这个例子中,构造函数Hello中,参数s与类Hello的变量s同名,这时如果直接对s进行操作则是对参数s进行操作。若要对类Hello的成员变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果; 第二行是对成员变量s的打印;第三行是先对成员变量s赋传过来的参数s值后再打印,所以结果是HelloWorld!

2. 把this作为参数传递
当你要把自己作为参数传递给别的对象时,也可以用this。如:
public class A {
public A() {
new B(this).print();
}

public void print() {
System.out.println("Hello from A!");
}
}
public class B {
A a;

public B(A a) {
this.a = a;
}

public void print() {
a.print();
System.out.println("Hello from B!");
}
}
运行结果:
Hello from A!
Hello from B!
在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。

④ javascript在函数内部接收函数的参数this对象,得到这个对象再次使用

<a onclick="dodo(this)">dodo</a>
--
function dodo(obj){
obj.XXX;//this对象会传过来,你可以用了。
}

⑤ 在javascript中,function里this的指向是怎样的

Javascript中一个函数的this关键字的行为相对其它语言有些不同。在严格模式和非严格模式间也有区别。
在大多数情况下,this的值由函数如何调用来决定。this值不能在函数执行过程中赋值设置,并且每次函数调用时this值可能也不相同。ES5通过添加bind方法设置函数的this值,无论函数如何被调用。(this值永久不变)
全局上下文中:
全局执行环境中(函数外部),无论在与不在严格模式下this指向全局对象。
console.log(this.document===document);//true
//在web浏览器中,window对象即是全局对象:
console.log(this===window);//true
this.a=37;
console.logn(window.a);//37
function上下文
在函数内部,this值依赖于函数如何调用。
简单调用:
functionf2(){
"usestrict";//使用严格模式
returnthis;
}
f2()===undefined;

⑥ js函数中的this是什么意思

this是指在哪个标签中调用即为哪个标签对象
例如:<div onclick="this.style.color='red'">red</div> 则是使当前div的内部文字为红色

⑦ js里面,this指的是什么

  1. 在一般函数方法中使用 this 指代全局对象

functiontest(){

this.x = 1;

alert(this.x);

}

test();// 1

2.作为对象方法调用,this 指代上级对象

function test(){

alert(this.x);

}

var o = {};

o.x = 1;

o.m = test;

o.m(); // 1

3.作为构造函数调用,this 指代new 出的对象

function test(){

this.x = 1;

}

var o = new test();

alert(o.x); // 1

//运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:

var x = 2;

function test(){

this.x = 1;

}

var o = new test();

alert(x); //2


4.apply 调用 ,apply方法作用是改变函数的调用对象,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数

var x = 0;

function test(){

alert(this.x);

}

var o={};

o.x = 1;

o.m = test;

o.m.apply(); //0

//apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。如果把最后一行代码修改为


o.m.apply(o); //1


摘自 pabitel's blog

⑧ 如何理解 JavaScript 中作为参数的函数的作用域和 this

作用域于参数类型无关,也就是说不管参数是函数还是其他类型,这个参数的作用域只在接收这个参数的函数内有效,如下:

functiontest(callback){
if(typeofcallback=="function"){
callback();
}

//此时这个参数的作用域只在test这个函数内有效,其他地方都是无效的。
}

this是一个指针类型,一般情况下是指向调用该方法或者属性的对象本身,除非指定了this的指向,否则都是指向window对象,下面这段代码希望对你的理解有帮助。

varobj={
fun:function(){
this.log("这个地方的this即为obj对象");
},
log:function(text){
console.log(text);
//当然这里的this也是指向obj对象的
}
}

functionstu(){
this.getAge=function(){
//此时这里的this指向stu类的实例,即指向下面注释代码中的stuObj对象
//varstuObj=newstu();
//stu.getAge();
}
}
functioncallback(){
//此时这里的this指向下面被注释代码中的obj,因为他手动指定了this对象
//除了call可以手动指定this之外apply也可以指定this指向
//varobj={name:"小明"};
//callback.call(obj);
}

除了以上几种情况下,还有一种情况this是指向dom元素本身的,如下:

<ahref="#"onclick="alert(this.href)">这个this即为这个a标签本身</a>

除了以上几种情况,this都是指向window对象的,当然不排除有一些我不清楚的情况。

⑨ c++函数形参为this是什么意思

this:指向当前对象的指针,并没什么特别的
如果不用这个关键字,怎么取当前对象的指针呢...?
上述代码中的this指向当前CDDBTestView类的对象,仅此而已

我觉得this关键字多数情况可用也可不用,因为在类函数中访问成员一般并不需要加上这个关键字,除非是有局部变量或参数名字和类成员变量一样,就需要加this以示区分,如下是完整代码示例:
#include <iostream>

class A{
int v;
public:
A(){v=3;}
void Set(int v){
std::cout<<"this->v:"<<this->v<<"\nv:"<<v<<'\n';
this->v=v;
}
};

int main(){
A a;
a.Set(4);
return 0;
}

⑩ javascript中函数方法call()中参数this的问题

this写在不同的地方代表不同的对象

在classB内写的this指的就是classB

javascript不是一个真正面向对象的语言,所谓的继承不过是和面向对象的语言实现继承差不多的效果而已

你先了解call()的用法:

call方法:
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

对你这里来说

functionClassB(sColor)
{
ClassA.call(this,sColor);
}

意思就是说 用ClassB的this来代替ClassA的this来执行ClassA()这个函数,所以ClassB就有了ClassA的所有功能 感觉像是继承了ClassA