javascript中的数据结构

Javascript中的关键字

abstract    
continue     
finally      instanceof      private  
    this

boolean
     default      float       
int            public       
throw

break
       do           for  
       interface    
 return        typeof

byte
        double       function    
long           short        
true

case
        else        
goto        short        
 native        var

catch
       extends      implements   new
           super        
void

char
        false        import  
    null
          switch       
while

class
       final    
   in           package      
 synchronized  with


Javascript的数据结构

Javascript的数据类型有以下几种

摘自一段话:

JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种,而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。

JavaScript中的代码只体现为一种形式,就是function。

注意:不要和Number, String, Object, Function等JavaScript内置函数混淆

任何一个JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, object 和 function类型中的一种,也就typeof返回值表明的类型。除此之外没有其他类型了。

1、undefined


typeof(undefined) 返回也是 undefined。

可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。

2、null

ypeof(null)返回object,但null并非object,具有null值的变量也并非object

3、bollean


4、number

typeof(NaN)和typeof(Infinity)都返回number

NaN参与任何数值计算的结构都是NaN,而且 NaN != NaN 。

Infinity / Infinity = NaN 。

5、string

6、function

JavaScript的代码就只有function一种形式,function就是函数的类型。请看下面的程序:

?





1

2

3

4

5

6

7

8

9

function myfunc()

{

alert(”hello”);

};

alert(typeof(myfunc));

这个代码运行之后可以看到typeof(myfunc)返回的是function。以上的函数写法我们称之为“定义式”的,如果我们将其改写成下面的“变量式”的,就更容易理解了:

?





1

2

3

4

5

6

7

8

9

var myfunc = function ()

{

alert(”hello”);

};

alert(typeof(myfunc));

这里明确定义了一个变量myfunc,它的初始值被赋予了一个function的实体。因此,typeof(myfunc)返回的也是function。其实,这两种函数的写法是等价的,除了一点细微差别,其内部实现完全相同。也就是说,我们写的这些JavaScript函数只是一个命了名的变量而已,其变量类型即为function,变量的值就是我们编写的函数代码体。

7、Object

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

创建一个没有任何属性的对象:

var o = {};

创建一个对象并设置属性及初始值:

var person = {name: “Angel”, age: 18, married: false};

创建一个对象并设置属性和方法:

var speaker = {text: “Hello World”, say: function(){alert(this.text)}};

创建一个更复杂的对象,嵌套其他对象和对象数组等:

var
company =

{

name: “Microsoft”,

product: “softwares”,

chairman: {name: “Bill Gates”, age: 53, Married: true},

employees: [{name: “Angel”, age: 26, Married: false}, {name: “Hanson”, age: 32, Marred: true}],

readme: function() {document.write(this.name + ” product ” + this.product);}

};

再看下面的一段代码

?





1

2

3

4

5

6

<script>

   function MyFunc(){};

   var
anObj = function(){

   alert("123")};

   MyFunc.call(anObj());

</script>


Javascript中的DOM树


HTML元素为根元素,HEAD 和
BODY为兄弟元素,他们有自己的子元素。HEAD元素有两个子元素,分别为META 和
TITLE,其中前者比较重要,负责着HTML页面的编码方式等信息

BODY下面又包含很多子元素......
为了更形象的描述这个现象,我们称之为节点树!节点的概念来自于网络理论,自然界中的任何事物都是有原子构成的,原子就是自然界的节点,

当然,原子又可以细分为原子核和核外电子,于是,原子核和核外电子也成为节点,只是更小的节点。

?





1

2

3

4

5

<html>

<div id="myclass">

"hello,world"

</div>

</html>

元素节点

构成DOM树的所有< ++
>元素都是元素节点。例如上面的h1,p,ul等

文本节点

嵌套在元素节点之内的被称为文本节点。例如<div>hello,world</div>中的"hello,world"被成为文本节点

属性节点

上面代码中的"id=myclass"被称为属性节点

并非所有的元素都会有属性,但是所有的属性都会被包含在元素内


下面介绍几个DOM树中几个比较重要的属性对象

childNodes

childNodes可以把一个元素下的所有的元素都给检索出来

nodeType:

元素节点的属性值——1

文本节点的属性值——3

属性节点的属性值——2

nodeValue

文本节点的值,注意我们不能通过搜索到文本节点后调用该属性,而必须通过包含该文本节点的元素节点来进行调用


动态创建HTML


(1) 使用document.write()进行写

(2) innerHtml进行读写

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>

 <head>

 <meta http-equiv="content-type"
content="text/html;charset=utf-8"/>

 </head>

 <script>

 function test(){

    var
html="<p>tell me?</p>";//插入文本

    document.body.getElementsByTagName(‘div‘)[0].innerHTML=html;

}

 </script>

 <body onload="test()">

 <div>

    hello

 </div>

 <div>

    world

 </div>

 </body>

</html>

(3)DOM提供方法

(3.1) createElement

时间: 2024-08-29 12:06:24

javascript中的数据结构的相关文章

Web高级 JavaScript中的数据结构

复杂度分析 大O复杂度表示法 常见的有O(1), O(n), O(logn), O(nlogn) 时间复杂度除了大O表示法外,还有以下情况 最好情况时间复杂度 最坏情况时间复杂度 平均情况时间复杂度 均摊时间复杂度 代码执行效率分析 大多数情况下,代码执行的效率可以采用时间复杂度分析,但是大O表示法通常会省略常数. 但是在工业级实现中,真正的执行效率通常会考虑多方面: 时间复杂度 空间复杂度 缓存友好 指令条数 性能退化(如哈希冲突解决方案等) 等 以上是理论层级,对于前端开发来说,如果你开发的

在Object-C中学习数据结构与算法之排序算法

笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速排序 双路快速排序 三路快速排序 堆排序 总结与收获 参考与阅读 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n2) 的时间复杂度.所以用到它的时候,数据规模越小越好.唯一的好处可能就是不占用额外的内存空间了吧. 1.算法步骤 首先在未排序序列中找到最小(大)元素,存放到排

javascript中的栈、队列。

                       javascript中的栈.队列 栈方法     栈是一种LIFO(后进先出)的数据结构,在js中实现只需用到2个函数 push()  接受参数并将其放置数组尾,并返回修改后的数组长度. pop()  移除数组尾的最后一项,并返回移除项的值. 事例: var colors = new Array();var count = colors.push("red","green"); count = colors.push(&

为什么不要在 JavaScript 中使用位操作符?

如果你的第一门编程语言不是 JavaScript,而是 C++ 或 Java,那么一开始你大概会看不惯 JavaScript 的数字类型.在 JavaScript 中的数字类型是不区分什么 Int,Float,Double,Decimal 的.咳咳,我说的当然是在 ES6 之前的 JS,在 ES6 的新标准中提出了像 Int8Array 这样新的数据类型.不过这不是本文叙述的重点,暂且就不谈啦.本文将更着重地谈 JS 的数字类型以及作用于它的位操作符,而关于包装对象 Number 的更多了解可以

如何理解并学习javascript中的面向对象(OOP) [转]

如果你想让你的javascript代码变得更加优美,性能更加卓越.或者,你想像jQuery的作者一样,写出属于自己优秀的类库(哪怕是基于 jquery的插件).那么,你请务必要学习javascript面向对象,否则你无法更灵活的使用javascript这门语言. 什么事闭包?到底什么是原型?(知道闭包和原型的,就算得上是javascript的高手了.但真正能够理解,并且灵活运用的人并不多)到底该如何学习javascript中的面向对象呢?在javascript这么语言正如日中天,相信不少人正在为

【前端】javascript中10常用的个小技巧总结

javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了新的数据结构 Set,但是能够灵活运用的人或许不多.利用Set数据结构我们能够轻松的去重一个数组,比如: let arr = [1, 2, 2, 3]; let set = new Set(arr); let newArr = Array.from(set); // Array.from方法可以将

JavaScript中正则表达式判断匹配规则以及常用的方法

JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可

Javascript 中的函数式编程

本文和大家分享的主要是javascript中函数式编程相关内容,一起来看看吧,希望对大家学习javascript有所帮助. 函数式编程(functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程. 函数式编程,近年来一直被炒得火热,国内外的开发者好像都在议论和提倡这种编程范式.在众多的函数式语言中,Jav

学习JavaScript中的异步Generator

本文和大家分享的主要是javascript中异步Generator相关内容,一起来看看吧,希望对大家学习javascript 有所帮助. 异步的generators和异步iteration已经到来 ! 这是错误的, 它们现在还在 阶段 3 ,这表示他们很有可能在JavaScript未来的一个版本中发布. 在他们发布之前,你可以通过 Babel 来在你的项目中使用还在阶段3的建议内容. 网站基本上还是一些分散运行的应用,因为任何在语言上的修改都会造成永久的影响,所以所有的未来的版本都需要向后兼容.