1、两种嵌入js的方式

   使用javascript前缀构建url:<a href="javascript:alert('执行JavaScript。

。')">执行js</a>

   js脚本放在<style></style>之间:

	<style type="text/javascript">
alert("执行JavaScript。。 ")
</script>

2、假设没有声明变量直接使用会报错:ReferenceError: x is not defined

假设声明了没有赋值,则该变量的值为undefined

3、单独保存js 文件

   <script src="test.js" type="text/javascript"></script>

4、3个强制类型转换的函数

   toString()将布尔值、数值转换为字符串

   parseInt()将字符串、布尔值转换为整数

   parseFloat()将字符串、布尔值转换为浮点数

5、javascript的变量没有块范围,这一点和Java、C++等不同

6、假设用var来定义变量。程序会强制定义一个新变量。

   虽然js是弱类型脚本语言,声明变量时无需指定变量的基本类型。

可是js的值

   保存到内存时也是有类型的。有5个基本类型。

7、Infinity、-Infinity与其它数值进行算术运算时,整个算式变成:NaN

   两个Infinitiy是相等的

   两个NaN不等

8、js中的复合类型

   Object:对象

   Array:数组

   Function:函数

9、js中的数组元素类型并不要求同样,且数组长度能够随意变化

   訪问数组元素时不会产生数组越界。仅仅会显示该元素的值为undefined

10、void强制指定表达式不会有返回值

11、

var a=[];
for(var i=0;i<10;a[i++]=i+10);//利用空语句
for(index in a){
document.writeln(a[index]+"<br/>");
}//index保存的是索引值

12、js支持自已定义错误。js仅仅有一个异常类:Error,catch块类也无需声明异常的类

for(var i=0;i<10;i++){
if(i>4) throw new Error("用户自己定义错误");
document.writeln(i+"<br/>");
}

13、使用with避免反复书写对象

    with(object){
statements
}

如:省写了document

with(document){
writeln( "hello<br/>");
writeln( "hello2<br/>");
writeln( "hello3<br/>");
}

14、js的函数即是可反复调用的“程序块”。也是一个Function实例

    推荐使用匿名函数

var f=function(parameter){
函数体
};

样例:

var a=function(){ alert("调用匿名函数")};
a(); //函数调用

15、递归一定要向已知点追溯



★16、注意:js的函数不仅是一个函数。更是一个类,在定义js函数的同一时候也得到一个与该函数同名的类

     该函数也是该类的唯一构造器。(定义一个函数的同一时候,实质上也定义了一个构造器。当定义函数时,

     函数中以this修饰的变量是实例属性,假设某个属性值是函数时,就可以觉得该属性变成了方法)

     因此有两种方式调用函数:

     1.直接调用

     2.用new keyword调用。这样总会有返回值,返回值就是一个js对象

例:function Person(name,age){
this.age=age;
this.name=name;
this.info=function(){
document.writeln("我的名字是:"+this.name+"</br>");
document.writeln("我的age是:"+this.age+"</br>");
}; }
//创建p对象
var p=new Person("周鹏程",24);
p.info();
//Person类定义了一个方法,通过使用匿名函数使代码更加简洁

上面把js中定义的一个函数附加到某个对象上,作为该对象的方法

其实,假设没有明白指定将函数“附加”到哪个对象上,该函数将“附加”到window对象上



17、js与Java不一样,它是一种动态语言。它同意随时为对象添加属性和方法

    事实上当我们直接为对象的某个属性赋值时。即视为给对象添加属性。

注意:JavaScript对象不能訪问它所属类的类属性

    假设直接定义一个全局变量。实际上这个变量会被“附加”到window对象上。作为window对象的实例属性



18、js中调用函数的3种方法

   1.直接调用:以函数“附加”的对象作为调用者,在函数后括号内传入參数来调用函数

   2.call()方法动态调用函数

    样例:

var each=function(arr,fn){
for(var s in arr){
fn.call(null,s,arr[s]);
}
}
each([4,20,3],function(a,b){
document.writeln("数组的第"+a+"个元素是:"+b+"<br/>");
}
);
//调用者.函数(參数1。參数2...)<=>函数.call(调用者。參数1,參数2...)

3.以apply()方法调用函数

     通过call()调用函数时,必须在括号里具体地列出每一个參数。

     而通过apply()调用函数时,能够在括号里以arguments来代表全部參数

var myfun=function(a,b){
alert("a="+a+"\nb="+b);
}
myfun(1,2);
myfun.call(window,1,2);
var fun2=function(num1,num2){
myfun.apply(this,arguments);
}
fun2(1,2);
myfun.apply(window,[1,2]);//arguments来代表全部參数,arguments本质上是个数组

19、js中函数是“一等公民”,它永远是独立的,函数永远不会从属于其它类、对象

 function Person(name){
this.name=name;
this.info=function(){
alert("我的name是:"+this.name);
}
}
var per=new Person("zpc");
per.info();
var name="window的name";
per.info.call(window);
//p.info()就可以引用这个函数,能够使用call()方法指定调用者

20、js中能够使用空參数,没有传入实參的參数值将作为undefined处理。js中没有函数重载一说,函数名就是函数的唯一标识

    函数名同样仅仅会导致覆盖

    function test1(){alert("test1");}
function test1(s){alert("test1"+s);}
test1();//输出test1undefined

21、因为js是弱类型语言,函数定义的參数列表无需类型声明,这一点为函数调用埋下了隐患。

    能够使用“鸭子类型”的理论改善这个问题:即在函数中先推断參数类型。并推断參数是否包括了须要訪问的属性、方法,

    当这些条件都满足时。程序才開始真正处理调用參数的属性、方法。



22、js对象的实质就是关联数组

    样例:

    		function Person(name,age){
this.age=age;
this.name=name;
this.info=function(){
alert("info method!");
}
}
var p=new Person("zpc",24);
//alert(p[age]);
alert(p['age']);//也能输出正确的年龄
alert(p.age);
for(proname in p){
document.writeln("p对象的"+proname+"属性值为:"+p[proname]+"<br/>");
}

23、尽量避免使用内嵌函数为类定义方法。而应该使用添加prototype属性的方式来添加方法。通过prototype属性来为类动态地

    添加方法会让程序更加安全,性能更加稳定。

js的全部类(也就是函数)都有一个prototype属性。当我们为JavaScript类的prototype

    属性添加函数、属性时。则可视为对原有类的扩展。通过使用prototype属性能够对js的内建类进行扩展。

样例:

function Person(age,name){
this.name=name;
this.age=age;
this.info=function(){
document.writeln("姓名:"+this.name+"</br>");
document.writeln("年龄:"+this.age+"</br>");
}
} var p1=new Person(23,"周鹏程");
p1.info();
//p1.walk();这里还没有给Person加walk方法
//全部的Person实例共享一个walk方法,节约内存
Person.prototype.walk=function(){
document.writeln(this.name+"正在慢慢溜达。。<br/>");
}
document.writeln("<br/>");
var p2=new Person(25,"鸟鹏");
p2.info();
p2.walk();
p1.walk();

24、js中创建对象的3种方式:

    1.使用new keyword调用构造器创建对象,如上面的样例

    2.使用Object直接创建对象

var per=new Object();
per.name="鸟鹏";
per.age=24;
per["gender"]="男";//js同意动态加入属性,js对象的本质是关联数组
document.writeln(per.name+"<br/>"+per.age+"<br/>"+per.gender);

js同意将一个已有的函数加入为对象的方法

     样例:

var per=new Object();
per.name="鸟鹏";
per.age=24;
function abc(){
document.writeln("对象的name属性:"+this.name+"<br/>对象的age属性:"+this.age+"<br/>");
}
per.info=abc;//加入abc函数为per对象的方法
per.info();

js通过new Function()方法来定义匿名函数。能够通过这样的方式来为js对象添加方法

     样例:

		var per=new Object();
per.name="鸟鹏";
per.age=24;
per.info=new Function("document.writeln('对象的name属:'+this.name);'<br/>';document.writeln('对象的age属性:<span style="font-family: Arial, Helvetica, sans-serif;">'+this.age);"); </span><span style="font-family: Arial, Helvetica, sans-serif;">per.info();</span>

3.使用json语法创建对象

var p={
name:"zpc",
age:32
};
alert(p);
//以上就是用json语法创建的p对象 var person={
name:"周鹏程",
gender:'male',
//属性值能够是随意的基本类型,甚至是json语法创建的对象
son:{
name:"鸟鹏",
age:12
},
info:function(){
document.writeln("姓名:"+this.name);
document.writeln("gender:"+this.gender);
document.writeln("son:"+this.son);
}
}
person.info();
//以上就是用json语法创建的person对象 其实json语法不只能够用于创建对象,使用JSON语法创建数组也是很常见的情形
传统创建数组方式一:
var a=new Array();
a[0]='zpc';
a[1]='niao';
传统创建数组方式二:
var a=new Array('zpc','niao'); 使用JSON创建数组:
var a=['zpc','niao']; //一个复杂的JSON对象
var person={
name:"周鹏程",
age:24,
//第三个属性是数组
schools:['小学','中学','大学'],
//第四个属性是对象数组
parents:[
{
name:'father',
age:50,
address:'shanghai'
}, {
name:'mother',
age:49,
address:'nanjing'
}
]
};
alert(person.parents);
alert(person.parents[0].name); //其实json已经发展成为一种轻量级的、跨语言的数据交换格式,成为了xml数据交换格式的有力竞争者

JavaScript--基于对象的脚本语言学习笔记(一)的更多相关文章

  1. JavaScript--基于对象的脚本语言学习笔记(三)

    事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv=&q ...

  2. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  3. JavaScript基于对象编程

    js面向对象特征介绍 javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDirven)并具有安全性能的脚本语言.它具有面向对象语言所特有的各 ...

  4. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  5. javascript权威指南第6版学习笔记

    javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console ...

  6. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  7. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  8. Javascript基于对象三大特征 -- 冒充对象

    Javascript基于对象三大特征 基本概述 JavaScript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance ) ...

  9. 《C# 语言学习笔记》——目录

    C# 简介 变量和表达式 流程控制 3.1 布尔逻辑 3.2 goto语句 3.3 分支 3.4 循环 变量的更多内容 4.1 类型转换 4.2 复杂的变量类型 4.3 字符串的处理 函数 5.1 定 ...

随机推荐

  1. c#中类与结构的区别 struct与class的区别

    原文发布时间为:2008-11-23 -- 来源于本人的百度文章 [由搬家工具导入] 类与结构的实例比较   类与结构的差别   如何选择结构还是类   一.类与结构的示例比较:   结构示例:    ...

  2. .bat 处理错误码

    某些命令只会返回error level,而要添加互操作性,.bat文件的返回值,exit code应该最后指定,那么需要,在这个单行的命令后面单个添加处理error level 的语句,最后再做统一的 ...

  3. luogu 1969 积木大赛

    题目链接 题意 初始序列为全\(0\),可以对序列进行的操作为将\([l,r]\)整体\(+1\),问操作多少次后可以得到序列\(a\). 思路 显然,最优的策略即是先找到整个序列的最小值,整体加上这 ...

  4. 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表

    在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...

  5. 在 CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本

    MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz).一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安 ...

  6. dhcp 学习整理

    centos 6.5 rpm: dhcp-4.1.1-25.P1.el6.x86_64 dhcp-common-4.1.1-25.P1.el6.x86_64 服务: /etc/rc.d/init.d/ ...

  7. 二叉树遍历 Morris

    二叉树的遍历,先根遍历,不适用递归,存储空间为 O(1) 转自:http://chuansongme.com/n/100461 MorrisInOrder(): while 没有结束 如果当前节点没有 ...

  8. LeetCode OJ--Word Break II ***@

    https://oj.leetcode.com/problems/word-break-ii/ class Solution { public: unordered_set<string> ...

  9. CSDN博客已经打不开了

    CSDN博客已经打不开了,移动和联通的网都一样,怀疑是辽宁节点到骨干网出现故障 tracert结果 4跳和5跳本来是国际出口,相当于出国绕了一圈再回来访问 Hop IP地址 所在地 耗时(ms) 1 ...

  10. [Machine Learning with Python] My First Data Preprocessing Pipeline with Titanic Dataset

    The Dataset was acquired from https://www.kaggle.com/c/titanic For data preprocessing, I firstly def ...