当前位置:  编程技术>WEB前端
本页文章导读:
    ▪javascript学习笔记[3]--流程控制            玩了一会游戏,现在可以静一下,看会书,今天看到了流程控制和函数基础,先总结一下流程控制,等会再总结一下函数控制,明天应该就可以进入javascript的面向对象编程了.........
    ▪Ajax      刚刚学习ajax,给和我一样入门的几个例子在VS2005中新建一个页面,   1 <script type="text/javascript"> 2 function loadXMLDoc() 3 { 4 var xmlhttp; 5 if (window.XMLHttpRequest) 6 {// code for.........
    ▪coffee-script之面向对象初体验      在没有使用coffee-script之前,我们写类是这样写的,感觉会有点繁锁://-------------抽象类形状--------------function Shape(edges) { this.edges = edges;}Shape.prototype.getArea = function() { return -1;}Shape.prototype.g.........

[1]javascript学习笔记[3]--流程控制
    来源:    发布时间: 2013-11-06

      玩了一会游戏,现在可以静一下,看会书,今天看到了流程控制和函数基础,先总结一下流程控制,等会再总结一下函数控制,明天应该就可以进入javascript的面向对象编程了。我主要看的是javascript权威指南--张亚飞编著--清华大学出版社;还参考了javascript核心对象参考手册--韩延峰--人民邮电出版社,还有就是网上自己百度的,一些不错的博文我都会附上链接,也尊重那些原创作者们。好了开始:

     3 流程控制

            一些简单的流程控制,例如if....else if ...else语句,switch语句,while,do while语句差不多所有语言都一样的吧,自己稍微看一下就行了,就不说了。下面说几个我觉得有意思的流程控制语句:

            1) for...in 循环

                  语法:for(variable in object)

                             statement;

               for...in语句遍历的是对象的原型链中对象的属性,这里有些情况是不能用for in循环的,比方对象的方法,宿主对象的属性,静态成员,挺乱的,留待以后知道什么是原型,链这些知识知道了之后再解决吧。

<script>
var arr = new Array("this", "is", "a", "test");
for(var i in arr){
document.write(arr[i]+"\t");
}
</script>
//输出 this is a test


//这个例子挺好的
var myObject ={hisName:"javascript", age:11, belonging:"ECAM"};
for(var prop in myObject){
document.write("myObject." + prop + "=" + myObject[prop]+"<br />");
}

//输出:
// myObject.hisName = javascript
//myObject.age = 11
//myObject.belonging = ECMA

            2) for each...in循环

                  语法:for each(variableIterant in object){

                                     statement;

                    }

                  for each...in遍历的是对象属性的值,而不是属性的名称

//还是这个例子
var myObject ={hisName:"javascript", age:11, belonging:"ECAM"};
for(var prop in myObject){
document.write(item+"<br />"):
}

//输出:
// javascript
//11
//ECMA

           3) 标签语句

                为语句提供一个标识符,用于直接跳转到该标识符所指定的行开始执行,只能由break,continue语句使用,用来指示break和continue到哪个语句,实际中很少用到吧,反正这是我第一次看到。下面是一个不错的例子

<script type="text/javascript">
outerloop:
for (var i = 0; i < 10; i++)
{
innerloop:
for (var j = 0; j < 10; j++)
{
if (j > 3)
{
break;
}
if (i == 2)
{
break innerloop;
}
if (i == 4)
{
break outerloop;
}
document.write("i=" + i + " j=" + j + "<br>");
}
}
</script>

           4) let语句(javascript 1.7新增的)

               挺新的东西吧,书上介绍的也很短,网上资料也很少,只知道let语句允许使用标识符来标示一个语句。

           5) yield语句

               这个东西挺有用的,yield语句可以在循环语句中产生一个输出值并返回,包含yield语句的函数称为产生器,一般用迭代器遍历产生器。

//这个yield语句我只在firefox浏览器中看到了效果,其他浏览器都没有显示
<script type="application/javascript; version=1.7">
function generator(){
var i = 0;
while(i<10){
//产生输出
yield i ;
i++;
}
}
//获取产生器
var g = generator();
//迭代
for(var j = 0; j<10; j++){
document.write(g.next()+"<br>");
}
</script>

//不使用产生器
<script >
function writeValue(param){
document.write(param+"<br />");
}
function generator(){
var i = 0;
while(i<10){
//产生输出
writeValue(i);
i++;
}
}
generator();
</script>

           6) with语句

               用来方便地引用某个特定对象额方法和属性

var rightNow = new Date();

    
[2]Ajax
    来源:    发布时间: 2013-11-06

刚刚学习ajax,给和我一样入门的几个例子

在VS2005中新建一个页面,  

1 <script type="text/javascript">
2 function loadXMLDoc()
3 {
4 var xmlhttp;
5 if (window.XMLHttpRequest)
6 {// code for IE7+, Firefox, Chrome, Opera, Safari
7 xmlhttp=new XMLHttpRequest();
8 }
9 else
10 {// code for IE6, IE5
11 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
12 }
13 var name=document.getElementById("Text").value;
14 xmlhttp.open("Post","conent.aspx?fname="+escape(name),true);
15 xmlhttp.onreadystatechange=function()
16 {
17 if (xmlhttp.readyState==4 && xmlhttp.status==200)
18 {
19 document.write(xmlhttp.responseText);
20 }
21 }
22
23 xmlhttp.send(null);
24
25 }

然后在页面中添加一个
<asp:TextBox ID="Text" runat="server"></asp:TextBox>
<button type="button" onclick="loadXMLDoc()">请求数据</button>

在新建一个目标页面,也就是xmlhttp.open("Post","conent.aspx?fname="+escape(name),true);中的conent.aspx。在page_load事件中添加这两行代码:

 string name = Request["fname"].ToString();
 Response.Write("你好,"+name+"");

 好了所以的工作都已经完成。       

本文链接


    
[3]coffee-script之面向对象初体验
    来源:    发布时间: 2013-11-06

在没有使用coffee-script之前,我们写类是这样写的,感觉会有点繁锁:

//-------------抽象类形状--------------
function Shape(edges) {
this.edges = edges;
}

Shape.prototype.getArea = function() {
return -1;
}

Shape.prototype.getEdges = function() {
return this.edges;
}

//--------------三角形----------------
function Triangle(bottom, height) {
Shape.call(this, 3);
this.bottom = bottom;
this.height = height;
}

//继承
Triangle.prototype = new Shape();
//重写方法
Triangle.prototype.getArea = function() {
return 0.5 * this.bottom * this.height;
}

//---------------矩形----------------
function Rectangle(bottom, height) {
Shape.call(this, 4);
this.bottom = bottom;
this.height = height;
}

//继承
Rectangle.prototype = new Shape();
//重写方法
Rectangle.prototype.getArea = function() {
return this.bottom * this.height;
}

//-------------测试-------------------
var tri = new Triangle(4, 5);

document.write(tri.getEdges() + "<br>");
document.write(tri.getArea() + "<br>");

var rect = new Rectangle(20, 40);
document.write(rect.getEdges() + "<br>");
document.write(rect.getArea() + "<br>");

我们使用coffee-script写的话只要象下面这样写就可以了,看起来优雅了很多,对于习惯了java等语言的面向对象方式开发的人来说,这种方式好理解多了,而且代码少了一半。

class Shape
constructor: (@edges) ->
getEdges : () -> @edges
calcArea : () -> -1

class Triangle extends Shape
constructor : (@bottom, @height) -> super 3
calcArea : () -> @bottom*@height*0.5

class Rectangle extends Shape
constructor : (@bottom, @height) -> super 4
calcArea : () -> @bottom*@height

tri = new Triangle 4,5
rect = new Rectangle 4,5

console.log tri.getEdges()
console.log tri.calcArea()

console.log rect.getEdges()
console.log rect.calcArea()

实际后台生成的js文件内容是:

(function() {
var Rectangle, Shape, Triangle, rect, tri;
var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
for (var key in parent) {
if (__hasProp.call(parent, key))
child[key] = parent[key];
}
function ctor() {
this.constructor = child;
}

ctor.prototype = parent.prototype;
child.prototype = new ctor;
child.__super__ = parent.prototype;
return child;
};
Shape = (function() {
function Shape(edges) {
this.edges = edges;
}

Shape.prototype.getEdges = function() {
return this.edges;
};
Shape.prototype.calcArea = function() {
return -1;
};
return Shape;
})();
Triangle = (function() {
__extends(Triangle, Shape);
function Triangle(bottom, height) {
this.bottom = bottom;
this.height = height;
Triangle.__super__.constructor.call(this, 3);
}

Triangle.prototype.calcArea = function() {
return this.bottom * this.height * 0.5;
};
return Triangle;
})();
Rectangle = (function() {
__extends(Rectangle, Shape);
function Rectangle(bottom, height) {
this.bottom = bottom;
this.height = height;
Rectangle.__super__.constructor.call(this, 4);
}

Rectangle.prototype.calcArea = function() {
return this
    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3