⑴ js中函數的內部方法和屬性指的什麼call()方法是誰的每個對象都有這個方法嗎
arguments對象:函數內部對象,傳入函數中所有參數的集合,類數組對象
屬性:callee 指針,指向擁有這個arguments對象的函數 作用:解耦
例子:迭代
function factorial(num) {
if(num<=1){
return 1;
}else{
return ( num*arguments.callee(num-1));
}
}
console.log(factorial(4));//24
this對象:函數內部對象,引用的是函數執行的環境對象 在全局作用域執行函數時this為全局對象(window)
window.color='red';
var o={color:'blue',};
function sayColor(){alert(this.color);};
sayColor(); //red
o.sayColor=sayColor;
0.sayColor();//blue 看this引用的誰
caller屬性:指向調用當前函數的函數 保存著調用當前函數的函數的引用
function a(){
b();
}
function b(){
alert(b.caller)
}
b();//輸出a函數體
apply()和call(): 作用:修改函數this的指向(修改上下文),拓展函數的作用域,對象與方法解耦 區別:傳參 apply(要修改的指向,參數數組/arguments對象)
call(要求改成的指向,arg1,arg2...)
例子:啞巴說話
function PersonWei() {
}
PersonWei.prototype={
country:'Wei',
sayCountry:function () {
console.log('I am form '+this.country);
},
}
var xuShu={
country:'Shu',
}
var caoCao=new PersonWei();
caoCao.sayCountry();// I am form Wei
caoCao.sayCountry.call(xuShu); //I am form Shu
不知道這樣做合不合理,定義了一個表示魏國人的構造函數PersonWei(),它具有屬性:country和方法sayCountry(),然後實例了一個caoCao(曹操),我們想要幫xuShu(徐庶)說出自己的國家:caoCao.sayCountry.call(xuShu);讓caoCao的this指向變為xuShu(借屍還魂?腦洞大開,應該就是鬼上身,借用你的身體來實現他的行為),這時候this.conutry 中的this指向的就是xuShu對象了,因此結果是 I am form Shu
⑵ Js 怎麼調用(function () {里的函數
需要通過return的方式把要調用的函數返回給外部。
比如:
<script>
varta=(function(){//定義一個閉包匿名函數。
returnfunction(){//返回匿名函數內部的匿名函數給ta
alert('1');
}
})();
ta();//執行ta,彈出信息1
</script>
補充:
閉包是指有權訪問另一個函數作用域中的變數的函數,創建閉包的最常見的方式就是在一個函數內創建另一個函數,通過另一個函數訪問這個函數的局部變數。這種寫法就是閉包的寫法,閉包內部的函數如果不是return方式,在外部無法獲取,無法進行調用。
Function函數與Sub過程類似。但 Function函數可以有返回值。可以使用參數。如果 Function函數沒有任何參數,則 Function語句必須要包含空括弧。 Function函數通過函數名返回一個值。返回值的數據類型是Variant.
語法: Function 函數名 (參數1,參數2,...)
...
End Function
Function函數是包含在Function和End Function語句之間的一組VBScript語句。
⑶ js中函數參數的使用.
你這個參數應該是動態拼接的吧,拼接的時候使用onclick="saveNodeEdit('"+編號+"');不就是字元串了?
⑷ js方法調用
JS函數的定義與調用方法
JS函數調用的四種方法:方法調用模式,函數調用模式,構造器調用模式,apply,call調用模式
1.方法調用模式:
先定義一個對象,然後在對象的屬性中定義方法,通過myobject.property來執行方法,this即指當前的myobject
對象。
var blogInfo={
blogId:123,
blogName:"werwr",
showBlog:function(){alert(this.blogId);}
};
blogInfo.showBlog();
2.函數調用模式
定義一個函數,設置一個變數名保存函數,這時this指向到window對象。
var myfunc = function(a,b){
return a+b;
}
alert(myfunc(3,4));
3.構造器調用模式
定義一個函數對象,在對象中定義屬性,在其原型對象中定義方法。在使用prototype的方法時,必須實例化該對象才能調用其方法。
var myfunc = function(a){
this.a = a;
};
myfunc.prototype = {
show:function(){alert(this.a);}
}
var newfunc = new myfunc("123123123");
newfunc.show();
4.apply,call調用模式
var myobject={};
var sum = function(a,b){
return a+b;
};
var sum2 = sum.call(myobject,10,30); //var sum2 = sum.apply(myobject,[10,30]);
alert(sum2);
⑸ 請教js中 ) 這種函數的用法
多貼點代碼吧,我看著怎麼就是半個括弧呢
⑹ JS中創建函數的幾種方法
推薦幾篇博客給你,其實這種問題博客或者知乎等都是有大把大把的比較不錯的回答了
1、https://blog.csdn.net/JinPingQ/article/details/84335179
2、https://segmentfault.com/a/1190000017970415?utm_source=tag-newest
3、https://www.jb51.net/article/107012.htm
把這幾篇博客的內容自己整合一下,就了解的差不多了
⑺ js中什麼是函數封裝以及怎麼用
封裝最基本的意思就是對外提供簡單功能單一的方法,
比如一個方法根據不同的參數獲取不同的頁面元素
如點開頭的是查找class的元素,#開頭的是查找id,不加這兩個的是根據標簽查找
function getElements()
{
//這里要根據開頭判斷返回數據
}
這個方法功能雖然多,但是功能不單一不如提供3個對外的方法
function getElementById(id)
{
return getElements("#"+id);
}
function getByClass(cls)
{
return getElements("."+cls);
}
function getByTag(tag)
{
return getElements(tag);
}
這樣別人一看方法名就明白這個方法怎麼使用了,這就是封裝的最簡單應用
⑻ js中的方法和函數
functionshowname(ev){
alert("我的名字叫:"+ev.name);
}
functionshowqq(ev){
alert("我的qq:"+ev.qq);
}
這里不能用this,你調用的作用域this指向的是window
⑼ JS中函數調用的問題。
不是滴!
這個是fnclick是對象!
這個是js語法規范滴!
記住就行了!
⑽ javascript腳本中,字元串函數方法有哪些
還是不少的,http://blog.csdn.net/dracotianlong/article/details/7761104