`
hubin4
  • 浏览: 97311 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JS-2-函数-对象-数组

    博客分类:
  • AJAX
阅读更多
5
函数

★函数的作用与定义

function 函数名 (参数列表)
{
  程序代码
  return 表达式; //没有return 就是undefined
                 //return ; 也是undefined
}
如果有返回值
可以 变量 = 函数名(参数1,参数2,...)
也可 直接使用[需要的地方填上去就是了]

=============重要==================
对于JS:
<script language="javascript">
    var msg="globe variable";
    function add(x,y)
    {
       var sum;
         sum = x+y;
         return sum;
    }
    function show()
    {
       var msg="local variable";
        alert(msg);
     }
   show();
    sum=add(3,3);
    alert("sum=" + sum);


</script>

★server把网页输出,不管里面的东西
★浏览器不样,看见<script language="javascript">
就按照 脚本 对待了,
浏览器会一条一条 读,读到alert就输出,等待你点确定再读下去!
读到函数就是函数了,不会做什么,函数是等你调用的.
所以,在任何函数外边声明的变量是全局变量,[一上来就读到了嘛]
任何函数外边的 代码 也会一上来就执行!
[但是,通常我们都是写一个一个函数,供事件去调用]
所以,所以,所以 JS也可以用ALERT()这个方法来调试!!!!

★再说一个 ,上面的 var msg="globe variable"; 作用范围是不是 整个 <script>??

不是的,不仅仅是,而是这张网页的所以的JS都可以用的

★★搞笑搞笑,JS里也可以玩 值传递 引用传递
看下面的例子:两个
思路:后台给了一个全局集合,我可以在一个函数里改变集合里的某些值,
后面的函数用到后,值也变了!
[就是说全局的东西最好只是用,别去改,一改后面用的都是改后的了]
[当然,如果牛,可以做一个恢复函数,一call,把全局变量里的东西复位!]

<script language="javascript">
    var msg="全局变量";
    function show()
     {
        msg="局部变量";
     }
      show();
      alert(msg); //★是 局部变量 [已经改了]
</script>

<script language="javascript">
    var msg="全局变量";
    function show()
     {
        var msg;
        msg="局部变量";
     }
      show();
      alert(msg); //★是 全局变量 [这次改的是 新定义的了]
</script>

===============================
★参数个数可变的函数
这个主要是JS提供了一个 内部对象 arguments
看一个例子好了
<script language="javascript">
  
    function testParams()
     {
        var params = "";
        for(var i=0;i<arguments.length;i++)
        {
            params += " : " + arguments[i];
        }
        alert(params);
     }

     testParams("hb",134);
     testParams("hssb",134,'mxy');
    
</script>

★创建动态函数
就是模拟 函数指针 的 需要用到一个 内部对象Function
var funName = new Function(arg1,...,lastTxt);
说明,所有的参数必须是字串,最后的参数必须是这个动态函数的功能代码!

<script language="javascript">
    var sum = new Function("x","y",
           "var sum;sum=x+y;return sum;");
      alert(sum(3,2));
</script>

★这个东西,会用的人可以把功能做的无比强大,
普通的函数是写死的嘛!
这个动态函数是字串拼的,功能动态定!你说强大不强大!!


★JAVASCRIPT中的系统函数
说几个,现在可能不会,以后谁也不知道,说不定天天用!
1
encodeURI

var urlStr = encodeURI("http://www.g.cn/index.do?country=中国&name=b b");
alert(encodeURI(urlStr));

这个会给你URL编码,以后 传中文 不用愁了吧!!让JS给你做好了,
不过这个编码后 出现的 希奇古怪 的东西,我认为可以指定按照什么字符集进行编码的
http://www.g.cn/index.do?country=%25E4%25B8%25AD%25E5%259B%25BD&name=b%2520b
查一查好了[上面的希奇是我错了,我用了两次encodeURI]

2 decodeURI
然后我这里也用两次把它还原好了!![完全可以的]
<script language="javascript">
    var urlStr = decodeURI("http://www.g.cn/index.do?country=%25E4%25B8%25AD%25E5%259B%25BD&name=b%2520b");
      alert(decodeURI(urlStr));
</script>

3
parseInt
把一个字串变 指定 进制的整数[这个有用吧!!]
parseInt(numString,[radix])  radix[2-36]
如果没有指定第二个参数
那么前缀 0x 自动变 16进制
  0的自动变 八进制
其他的 十进制

★有个小密码 parseInt 碰到字母 也没有关系,只取字母前的数字 !
有高手可以用这个方法取出 字串 里的 字母

<script language="javascript">
      alert(parseInt("110",10));//110
      alert(parseInt("110",2)); //6
      alert(parseInt("110abc",2)); //6
     
      var num = 11;
      alert(num.toString(2)); //1011

      alert(11.toString(2)); //这样不可以!!!

</script>

4 parseFloat

5 isNaN

parseFloat parseInt 如果碰到全字母,返回 NaN 只可以用这个方法判断!
这个方法还可以单独判断 是不是一个纯 数字!
alert(isNaN("dd")); //true

6
escape方法
把非ASCII字符用%XX编码 替换 ,XX是UNICODE编码的16进制
用途是简单加密!
cookie就是这样加密的

7
unescape 方法
解码了

8
eval

也是动态的,可以看另外一篇东西
=====================================
6 对象

★对象 与 实例
[类 与 实例]

对象嘛,就是一个数据类型,烦一点而已[有属性有方法而已!]
人: 年龄 性别 吃饭()

对象里包含的变量:属性
包含对属性操作的函数:方法

都叫 对象的成员!!

重要:
JS里,都是function
只要定义了 构造函数,就等于定义了一个对象!
使用new 和 对象 的构造函数,就可以创建对象实例了
var objInstance = new ObjName(args.....);
重要:
objInstance 只要是合法的实例名即可!
new 一定要!
ObjName 已经存在的 构造函数!!

=============例子============
<script language="javascript">
function Person()
{
//这就是构造函数了,完全可以就这么写!什么都没有[参数 变量 方法]
}

var person1 = new Person(); //实例弄出来了
person1.age=18;//属性!第一次出现就表示新增加!
person1.name="zhangxiaoxiang";//随便加,加到内存满!!!
alert(person1.name + " : " + person1.age);
//用点访问 这很通常!!
//重要重要 还可以用 person1["age"];
//这有非常大的好处,可以动态访问,age是字串,可以动态改变!!

function sayFunc()
{
//alert(person1.name + " >>>>> " + person1.age);
alert(person1["name"] + " >[[[>> " + person1["age"]);

//可以动态改变哦
var temp= "name";
alert(person1[temp] + " >动态>> " + person1["age"]);

}
person1.say = sayFunc; //这个就是方法了
//用了() 就是 返回值给 say 了
person1.say();

alert("test eval()");
//前面说了 eval 可以动态 改变
//下面说个例子

alert(person1.name);//zhangxiaoxiang
eval("alert(person1.age);");//18 ,但是这里面是字串
//可以自己改变的哇,例子就不举了,应该知道了 自己拼装嘛
//写一下吧:
var x = "name";
eval("alert(person1."+ x +");");

</script>
=============================

★构造方法 和 this 关键字的 作用
刚刚说的 new 弄出来的都是 同样的东西
加上 构造方法 就不一样喽!!

所有对象在new 创建时都会调用 构造函数,
在构造函数中增加的属性和 方法都会被加到每个对象上

重要:千万别在 构造函数里有什么return 语句!

this 关键字是说:
重要:某个属性或者方法执行时,引用改属性或者方法的当前实例!!
========================
<script language="javascript">
function Person(name,age)
{
//alert("name is : "+name + " age is : "+age);
this.age=age;//就相当于第一次嘛,就新加了
this.name=name;
this.say=sayFunc;
}

function sayFunc()
{
alert(this.name + ":" +this.age);
//重要重要重要,这里的this任何情况都不可以省略
}
var person1 = new Person("aa",10);
person1.say();
var person2 = new Person("bb",11);
person2.say();
</script>
========================

★在函数中修改参数值的问题

值传递 和 引用传递
[不是前面说的全局 局部了]
========值传递================
<script language="javascript">
function changeValue(x)
{
x=5;
}
var x=3;
changeValue(x);
alert(x);
</script>
========================


========引用传递=======传对象=========
<script language="javascript">
function Person(name,age)
{
this.age=age;
this.name=name;
this.say=sayFunc;
}

function sayFunc()
{
alert(this.name + ":" +this.age);
}

function change(p1)
{
p1.name="jack";
}
var p1 = new Person("rose",10);
change(p1);
p1.say();
</script>
========================


7 JS内部对象
了解越多内部对象,工作就越舒服
有两类内部对象
1.动态对象[要new出来,实例名.成员]
2.静态对象[不new,直接 对象名.成员]

★Object对象
★String对象
★Math对象
★Date对象
★  每个对象的 toString 方法

Object对象
[他的出现 就 使我们懒得去弄一个function当自己的对象了
反正属性什么的都可以任意加么]
--------------
<script language="javascript">
var person = new Object();
person.name = "mike";
person.age = 17;
alert(person.name);
alert(person.age);
alert(person["name"]);
alert(person["age"]);
</script>
--------------------

String对象
动态对象,new后才可以用 方法 属性
length属性[不用说了,这个属性不new也可以用]
//JAVA里,可是一个方法哦,JAVA要()的JS不要了

方法:
#big();
#bold();
#fontcolor("red");
#link("http://www.ss.com");
等等,这些N多N多的法,都是为J2EE准备的
可以给你生成一些 标签 MSDN 或者JS 官网上有!

#charAt();
某位置上一个字符[0 开始 索引超出返回空"",不是NULL哦]

#indexOf();
[第一次出现的字符或者字串的位置,方向→,没有返回-1]
#lastIndexOf();
[第一次出现的字符或者字串的位置,方向←,没有返回-1]
如果字串里只有一次出现某字符,这两个是一样的

重要重要
可以只用某一方法 查出所有 子字符
在 父字符 里的位置
======
超级经典的代码:
<script language="javascript">
var str = "hello,hubin,hhi";
var pos = str.indexOf("h");
while(pos != -1)
{
   alert(pos);
   pos = str.indexOf("h",pos + 1);
}
</script>
======

#replace(old new);
[只替换第一个哦]
如果要全部替换 可用 正则表达式
str.replace("it","at");[一个]
str.replace(/it/g,"at");[全部](不知道有没有replaceAll)

#split

#match [配合 regex]
#search[配合 regex]

#slice [就是subString [头 和尾) 没有尾就全部 ]

#substr[头 长度]
#substring[头 和尾)

#toLowerCase
#toUpperCase


charCodeAt();
[返回UNICODE码 'g' 返回103 ]
charCodeAt().toString(16)就返回67 知道是g了吧
可以诗试中文



★Math 对象

var num = Math.random();
属性:E 差不多2.718
属性:LN10 差不多2.302
属性:LN2 差不多0.693
属性:PI
属性:SQRT1-2 2的平方根分之一
属性:SQRT2 2的平方跟

方法
abs
sin
cos
asin
acos

★Date
1970 1 1 0:0......

构造函数
Date()
Date(dateVal[浩淼值])
Date(year,month,date,hours,minutes,seconds,ms);

#parse() 分析一个字串 返回时间值[MSDN里有格式]
var datestring = "November 1,1997 10:15 AM";
var datestring = "7/20/98"; //month/day/year
var datestring = "July 10 1997";

#toGMTString  "05 Jan 1997 00:00:00 GMT"

#getYear()
#getMonth() [0 start]
#getDate()
#getDay()
#getHours()
#getMinutes()
#getSeconds()
#getMilliseconds()
#setXXXXXX

#getTime() 浩淼数

★toString方法
不同对象有不同的方法
整数
toString(16)
toString(2)

8 对象专用语句
1
with (对象名称)
{
//比如对象有一百的属性,你都要用
//但是你懒得写一百次对象名,就可以这样用
//这里就不要写对象名了,直接用 属性名和 方法了
getDate();
getYeae();
...
}

2
for..in
for(变量 in 对象)
{
//把对象的属性一个一个 赋值给 变量,
//你都不要知道里面有哪些变量名称和变量个数
对象的属性取值可以用[]
所以 对象名[变量] 可以得到 了
}
==========================
9 数组

重要性就不说了,
说说和对象的区别[相同点就是都是 数据的集合]
数组其实是一种特殊的对象[里面的属性都一样就OK了]

★数组列表
[] 用 ,分割 ,里面的东西可以是任意数据类型(其他数组也OK)
var arr=["suzhou",123,'bb',3.14];
重要,[]里面的东西才是 数组列表
arr指向了它,就是数组啦!!!
数组有个length属性,表示元素个数
可以这样访问: arr[i] 0 start
<script language="javascript">
var arr=["suzhou",123,'bb',3.14];
for(var i=0;i<arr.length;i++)
{
alert(arr[i]);
}
</script>

=========
注意:列表里可以是 表达式 ,可以为空[undefined]
var arr=[1,,,5];
=========

======看看数组的数组===二维数组[乱叫一下]吧==
var arr=[["hb","mm","yy"],["male","fe24","fe3"]];

<script language="javascript">
var arr=[["hb","mm","yy"],["male","fe24","fe3"]];
for(var i=0;i<arr.length;i++)
{
for(var j=0;j<arr[i].length;j++)
{
alert(arr[i][j]);
}
}
</script>

============

====重要,里面假如有个不是数组的元素呢??==
var arr=["along",33,["hb","mm","yy"],["male","fe24","fe3"]];

<script language="javascript">
var arr=[33,["hb","mm","yy"],["male","fe24","fe3"]];
for(var i=0;i<arr.length;i++)
{
if(arr[i].length)//这是检查是不是数组的[没有length 就是undefined]
{
for(var j=0;j<arr[i].length;j++)
{
alert(arr[i][j]);
}
}
else
{
alert(arr[i]);
}
}
</script>

===但是,是字串时又要 考虑了因为 字串 有length属性!

推荐 不要弄复杂的数据 类型,

★用对象方式实现数组
说白了就是自己写一个 数组
[自己写个对象 加个length属性 加个访问方法]
<script language="javascript">
function MyArray()
{
   this.length = arguments.length;
   for(var i=0;i<this.length;i++)
   {
      this[i] = arguments[i];
    }
}
//OK, a array has been made!
var str="";
var arr= new MyArray(4,2.4,"bbb");
for(var i=0;i<arr.length;i++)
{
  str+=arr[i] +"\n";
}
alert(str);
</script>
-------------
[注意,这种方式写的数组并不真正的数组,看看下面的例子还要牛]
<script language="javascript">
function MyArray(size)
{
   this.length = size;
   for(var i=0;i<size;i++)
   {
      this[i] = "";
    }
}
//OK, another array has been made!
//now use it
var arr = new MyArray(2);
arr[0] = 3;
arr[1] = "abc";
arr[2] = 2.3;

var x,str="";
for(x in arr)
{
   // x will be the index and all field in MyArray
   //如果用 数组列表, length 属性就不会出现了
  str += x + " : " + arr[x] + "\n";
}
alert(str);
</script>
=============================

★Array对象
这个是 内部 提供的,有很多 方法 可以用,可以像list一样添加,排序什么的
他有三个重要 的构造函数:
1
Array()
没有任何参数,表示创建的数组的初始状态为0,要用要先添加
<script language="javascript">
var arr = new Array();
arr[0] = 'a';
arr[1] = 4;
</script>

2
Array(4) //表示长度,必须是 正整数

3
Array(2.3,"aaa",4)//这个就不说了
[只有一个正整数,JS认为是第二种]
最后,再看看sort方法!
<script language="javascript">
var arr = new Array();
arr[0] = 2.5;
arr[1] = "aa";
arr[2] = 1;
arr.sort();
var x, str="";
for(x in arr)
{
   str += x + " : " + arr[x] + "\n";
}
alert(str);
</script>
分享到:
评论

相关推荐

    js解析php数组对象数组对象数组对象.docx

    // 输出 "1-2-3" ``` #### 四、从 PHP 获取数组 假设 PHP 脚本返回了一个 JSON 格式的数组: ```php $array = array("apple", "banana", "cherry"); echo json_encode($array); ?&gt; ``` 在 JavaScript 中解析...

    JavaScript对象数组排序函数及六个用法

    为了应对不同场景下的排序需求,本文将介绍一个自定义的JavaScript函数,该函数支持对数组或对象进行排序,并且能够根据数组或对象中嵌套的任意深度的子键进行排序。以下是对该函数及其使用方法的详细解析。 函数...

    js数组相减简单示例【删除a数组所有与b数组相同元素】

    在JavaScript中,数组相减并不是一个内建的数组操作方法,所以我们需要自定义函数来实现这个功能。其核心思想是,遍历数组b中的每一个元素,再分别在数组a中查找是否有与之相同的元素,如果找到,则将这个元素从数组...

    Javascript数组函数大全

    ### JavaScript 数组函数详解 #### 1. `shift` 方法 `shift` 方法用于移除数组的第一个元素,并返回被移除的元素。如果数组为空,则返回 `undefined`。 ```javascript let a = [1, 2, 3, 4, 5]; let b = a.shift();...

    js将类数组对象转换成数组对象

    在JavaScript中,类数组对象并不是真正的数组,但是它们看起来和数组很相似,因为它们也有索引和length属性。类数组对象包括但不限于Arguments对象(函数调用时传入的参数集合)、HTMLCollection(如document....

    js代码-数组对象根据某个值相同合并分组

    在JavaScript编程中,数组对象的处理是常见的任务之一。当你需要根据数组中对象的某个特定属性值进行分组和合并时,可以采用多种方法来实现。这个场景在数据处理、表格展示、统计分析等用途中非常常见。在这个案例中...

    JavaScript-数组-循环-bloco-4.2

    在这个"JavaScript-数组-循环-bloco-4.2"的主题中,我们将深入探讨JavaScript中的几种常见循环结构以及它们在处理数组时的应用。 1. **for循环**: for循环是最基础的循环结构,适用于数组遍历。其基本语法如下: ...

    js代码-判断对象数组是否含有某个对象

    在JavaScript编程中,判断对象数组是否包含某个特定对象是一项常见的任务。这主要涉及到数组的遍历和比较操作。本文将详细讲解如何实现这个功能,并提供相关的代码示例。 首先,我们要明白JavaScript中的对象是引用...

    44-数组图片切换实例

    在"数组图片切换实例"中,我们可以创建一个数组,将每张图片的URL或对象(包含URL、alt描述等)作为数组元素。常见的数组操作包括初始化数组、遍历数组、添加或删除元素等。例如: ```javascript let imageArray =...

    js,数组,对象,构造函数,json字符串

    在JavaScript(JS)中,数组、对象、构造函数和JSON字符串是编程中常见的核心概念。以下是对这些知识点的详细说明: 1. **数组操作**: - 在JS中,你可以使用`Array`对象的一些内置方法来操作数组,例如`reduce()`...

    求js两个数组的差集,以便测试

    - 创建一个对象来存储 `arr2` 中的元素作为键,值可以设为任意数值(如1)。 - 遍历 `arr1`,检查元素是否存在于哈希表中。 - 如果不存在,则将其添加到 `arr3` 中。 示例代码: ```javascript var map = {};...

    JavaScript数组对象JSON学习笔记

    ### JavaScript 数组对象 JSON 学习笔记 #### 一、JavaScript 数组操作 在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 #####...

    17 - 数组排序.rar

    总结来说,这个“17 - 数组排序.rar”文件可能涉及了JavaScript数组排序的各个方面,包括基本用法、自定义比较函数、对象属性排序、稳定性和性能考虑等知识点。通过深入学习和实践这些内容,开发者可以更好地理解和...

    Javascript数组函数库.docx

    JavaScript中的数组函数库是开发过程中不可或缺的一部分,它们提供了丰富的功能,用于操作和处理数组对象。以下是一些主要的数组函数的详细说明: 1. `shift()`: 这个方法会删除数组的第一个元素,并返回被删除的...

    JavaScript视频教程-5.数组和对象(1)

    数组在JavaScript中是有序的数据集合,可以存储任意类型的值,包括数字、字符串、对象甚至函数。数组的索引是从0开始的,这意味着一个包含n个元素的数组,其最后一个元素的索引为n-1。创建数组的方式有两种:数组...

    js读取本地文件到字节数组

    3. **处理字节数组**:最后,可以遍历 Uint8Array 对象,并将其转换为普通的 JavaScript 数组。这一步虽然不是必须的,但在某些情况下可能更方便进行后续处理。 #### 总结 使用 JavaScript 读取本地文件并转换为...

    js中数组中相同的元素进行整合并创建一个新数组.pdf

    这个问题可以通过一个名为`sortArr`的函数来解决,它接收两个参数:一个数组(`arr`)和一个字符串(`str`),然后返回一个新的数组,其中的元素是原数组中具有相同属性值的对象的集合。 首先,让我们详细解析`...

    js判断数组是否相等的方法

    在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    在 JavaScript 中,数组是一种特殊的数据结构,可以存储各种类型的数据,包括整型、字符串、对象等。虽然 JavaScript 不直接支持多维数组,但可以通过数组嵌套实现类似的功能。 1. **定义数组** - 定义固定长度的...

Global site tag (gtag.js) - Google Analytics