Javascript 个人笔记(没有整理,很乱)

==============关于元素的显示和隐藏=============

Visibility快于Display

让图画时隐时现会创造很有趣的效果,有2种方法可以实现这个目的:使用CSS的visibility属性或者

display属性。对于绝对位置元素,diaplay和visibility具有同样的效果。两者的区别在于:设置为

display:none的元素将不再占用文档流的空间,而设置为visibility:hidden的元素仍然保留原位置。

==============一点经验=======================

1、JS变量没有块作用域,在判断循环中的定义在整个函数内都有定义

2、split()的参数是一个正则字符串,因此如果用郑泽表达式特殊字符作为参数时一定要转义

=============隐去浏览器中当鼠标移到图片上跳出的工具栏=============

<img galleryimg="no">

或者

<head>

<meta http-equiv="imagetoolbar" content="no">

</head>

=============一些技巧==================

1、#连接不会回到顶部

<a href="#" ōnClick="return false">

---------------

2、关闭不提示

opener=null;

window.close();

============js面向对象编程的一些总结=============

1、静态属性类实例访问不到,同样实例属性只能实例访问

var myfun=function(){this.a="a"};

myfun.b="b";

alert(new myfun().a);//输出a

alert(myfun.a);//输出undefined

alert(myfun.b);//输出b

alert(new myfun().b);//输出undefined

2、给prototype添加属性

添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。

function Fish(name, color)

{

this.name=name;

this.color=color;

}

Fish.prototype.livesIn="water";

Fish.prototype.price=20;

正如上面的例子所示,每条实例鱼可以有不同的名字和颜色,但是他们有一个共同的属性,那就是都生活在水里。

这时因为当一个对象被创建时,这个构造函数将会把它的属性prototype赋给新对象的内部属性__proto__。这个__proto__被这个对象用来查找它的属性。

3、用prototype给对象添加函数

通过prototype来给所有对象添加共用的函数。这有一个好处:你不需要每次在构造一个对象的时候创建并初始化这个函数。

4、每个函数都有一个静态name属性(同样,每个内置类都有一个静态name属性),这个属性不能也不会被覆盖

function a()={};

var b=new Function();

alert(b.name);//输出anonymous

alert(a.name);//输出a

alert(Array.name);//输出Array

==================关于this==================

之所以说一下this,是因为他并不完全等同于C++或者Java里面的this变量。

this在js中表示紧贴着调用地点的,非prototype扩展的方法。

比如上面提到的

MyObj.prototype.sayBye = function () {

alert(”Bye” + this.name);

}

这个里面的this,紧贴的非prototype的函数是MyObj(再次注意,js中class是通过函数实现的),所以this.name就是实例变量。

但是在这种情况

MyObj.prototype.doSomething = function () {

todo(function () {

alert(this.name);

});

}

这个时候,this表示的是这个匿名函数

function () {

alert(this.name)

}

那么这里就会出现错误,如果想要这样使用,应该使用辅助变量。

MyObj.prototype.doSomething = function () {

var me = this; //把自己的reference赋值给变量me

todo (function () {

alert(me.name); //通过me来访问myObj实例

});

}

(0)

相关推荐

  • JavaScript学习笔记整理_setTimeout的应用

    setTimeou的t应用 var ids = []; function foo1(i) { this.i = i; console.log('i = '+i); ids[0] = setTimeout((function () { foo1(i); }),1000); } function foo2(j) { this.j = j; console.log('j = '+j); ids[1] = setTimeout((function () { foo2(j); }),1000); } fo

  • JavaScript学习笔记整理_关于表达式和语句

    表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一条语句的值,若没有值则返回undefined eval()使用了调用它的变量的作用域环境 它接收的字符串参数,在作为单独的代码时,必须是有语义的,否则编译失败 delete运算符:用来删除对象的自由属性.数组的元素, 删除属性后,属性将不存在,而删除数组元素后,会在数组内留下一个值为undefine

  • JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用

    如下所示: //实现枚举类型,扑克牌应用 function creatEnum(p){ //构造函数 var Enumeration = function(){throw 'can not Instantiate Enumerations';}; //重写原型并将原型赋值给变量proto var proto = Enumeration.prototype = { constructor:Enumeration, toString:function(){return this.name;}, va

  • JavaScript学习笔记整理_用于模式匹配的String方法

    用于模式匹配的String方法: String支持4种使用正则表达式的方法: seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如果参数不是正则表达式,则首先会通过RexExp构造函数将它转换成正则表达式,seach()方法不支持全局搜索,它忽略修饰符g: replace()用于检索与替换操作,第一个参数是一个正则表达式,第二个参数是要进行替换的字符串.它对调用该方法的字符串检索,按照模式匹配子串替换成第二个参数,若包含修饰符g则全文匹配.若第一个参

  • JavaScript学习笔记之ES6数组方法

    ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了).上一次标准的制订还是2009年出台的ES5.目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本.但大部分标准已经就绪,且各浏览器对ES6的支持也正在实现中. ES6给数组添加了一些新特性,而这些新特性到目前为止完全可以运用到自己的业务层.在这一节中将总结有关于ES6给数组提供一些新特性的使用方法. ES6提供

  • JavaScript学习笔记之数组去重

    推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 话说面试常会碰到面试官会问JavaScript实现数组去重的问题,最近刚好在学习有关于JavaScript数组相关的知识,趁此机会整理了一些有关于JavaScript数组去重的方法. 下面这些数组去重的方法是自己收集和整理的,如有不对希望指正文中不对之处. 双重循环去重 这个方法使用了两个for循环做遍历.整个思路是: 构建一个空数组用来存放去重后

  • JavaScript学习笔记之数组随机排序

    推荐阅读:JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组的增.删.改.查 JavaScript中提供了sort()和reverse()方法对数组项重新排序.但很多时候这两个方法无法满足我们实际业务的需求,比如说扑克牌游戏中的随机洗牌. 在这篇文章一起来学习如何完成上面这个示例的效果,以及一些有关于数组随机排序的相关知识. 在网上查了一下有关于数组随机排序的相关资料,都看到了Math.random()的身影.打开浏览器控制器,输入: Math.random() 从图

  • JavaScript学习笔记之取数组中最大值和最小值

    推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法. 取数组中最大值 可以先把思路理一下: 将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值: 开始遍历数组,从第二个元

  • JavaScript学习笔记之数组的增、删、改、查

    在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 数组是JavaScript中常见的一个对象,它有一些经典的操作,比如数组的增.删.改.查.在这篇文章中主要整理这方面的相关操作方法. 增

  • JavaScript自学笔记(必看篇)

    0-判断变量.参数是否初始化 if(x){} //变量被初始化了或者变量不为空或者变量不为零 1-声明函数不需要声明返回值.参数类型,句尾甚至都不需要';' function sum(i1,i2){return i1+i2} 2-直接声明匿名函数立即使用 var f=function(i1,i2){return i1+i2;}; alert(f(1,2));//普通匿名函数 alert(function(i1,i2){return i1+i2;}(3,4));//直接声明,立即使用 3-js中没

随机推荐