本文共 5792 字,大约阅读时间需要 19 分钟。
JS中数据类型:原始类型、引用类型。
原始类型:Undefined、Number、String、Boolean、Null, // Null类型只有一个值,null 引用类型:Object以及Object的子类ES规范(ECMAScript规范),在ES6(ES6全称是ECMAScript 6,是正式发布的JavaScript语言的一种标准,该标准的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。)之后,又基于以上的6种类型之外添加了一种新的类型:Symbol
JS中一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型。
typeof运算符的语法格式: typeof 变量名typeof运算符的运算结果是以下6个字符串之一:注意字符串都是全部小写。
“undefined” “number” “string” “boolean” “object” “function”在JS当中比较字符串是否相等使用“==”完成。没equals ===表示不仅值要相等,数据类型也要相同。
JS中数据类型:原始类型、引用类型。
原始类型:Undefined、Number、String、Boolean、Null 引用类型:Object以及Object的子类Undefined类型只一个值,这个值就是 undefined
当一个变量没有手动赋值,系统默认赋值undefined 或者也可以给一个变量手动赋值undefined。alert(parseInt("2.333"));//2
alert(parseFloat("2.333"));//2.333
alert(Math.ceil("2.333"));//3
var v1 = 1;var v2 = 1.0;var v3 = -2.3;var v4 = NaN;var v5 = Infinity;//结果都为numberalert(typeof v1);alert(typeof v2);alert(typeof v3);alert(typeof v4);alert(typeof v5);
// 关于NaN (表示Not a Number,不是一个数字,但属于Number类型)
什么情况下结果是一个NaN呢? // 运算结果本来应该是一个数字,最后算完不是一个数字的时候,结果是NaN.var a = 100;var b = "abc";alert(a/b);//NaN
// Infinity ( 当除数为0的时候,结果为无穷大)
alert( 10 / 0);//Infinity思考:在JS中10 / 3 = ?
alert(10 / 3);//3.3333333333333335isNaN() : 结果是true表示不是一个数字,结果是false表示是一个数字。
// 关于isNaN函数? // 用法: isNaN(数据) ,结果是true表示不是一个数字, 结果是false表示是一个数字.// isNaN : is Not a Numberfunction sum(num1,num2) { if(isNaN(num1) || isNaN(num2)){ return "参与运算的必须全部是数字!!!"; } return num1 + num2;}alert(sum(100,"abc"));//参与运算的必须全部是数字!!!alert(sum(1,2));//3
var s1 = 'abcdef';var s2 = "test";
需要注意的是:String是一个内置的类,可以直接用,String的父类是Object。
// 小string(属于原始类型String)var x = "king";alert(typeof x);//string// 大String(属于Object类型)var y = new String("abc");alert(typeof y);//object
常用属性:
length 获取字符串长度常用函数:
// 获取字符串的长度
alert(x.length);//4alert(y.length);//3
// 判断一个字符串中是否包含某个子字符串?
alert("http://www.baidu.com".indexOf("https") >= 0 ? "包含" : "不包含");//不包含
// replace (注意:只替换了第一个)
alert("name=value%name=value%name=value".replace("%","&"));//name=value&name=value%name=value
// 继续调用replace方法,就会替换第“二”个.
// 想全部替换需要使用正则表达式.alert("name=value%name=value%name=value".replace("%","&").replace("%","&"));//name=value&name=value&name=value
// 考点:经常问 substr和substring的区别?
// substr(startIndex, length)alert("abcdefxyz".substr(2,4));//cdef// substring(startIndex, endIndex) 注意:不包含endIndexalert("abcdefxyz".substring(2,4));//cd
java与js定义对象对比
java语言怎么定义类,怎么创建对象?(强类型)public class User{ private String username;private String password;public User(){ }public User(String username,String password){ this.username = username;this.password = password;}}User user = new User();User user = new User("lisi","123");
JS语言怎么定义类,怎么创建对象?(弱类型)
User = function(username,password){ this.username = username;this.password = password;}var u = new User();var u = new User("zhangsan");var u = new User("zhangsan","123");
toString()
valueOf() toLocaleString()
第一种方式:
function 类名(形参){ } 第二种方式: 类名 = function(形参){ }
创建对象的语法:
new 构造方法名(实参); // 构造方法名和类名一致。对象的定义:
var 变量名 =new Object(); // 对象实例(空对象) 变量名.属性名 = 值; // 定义一个属性 变量名.函数名 =function(){} // 定义一个函数对象的访问:
变量名.属性 / 函数名();演示:
//定义类的第一种方式function sayHello() { alert("sayHello")}// 把sayHello当做一个普通的函数来调用.sayHello();//sayHello// 这种方式就表示把sayHello当做一个类来创建对象.var obj = new sayHello();//sayHello,obj是一个引用,保存内存地址指向堆中的对象. alert(obj);//[object Object]// JS中的类的定义,同时又是一个构造函数的定义// 在JS中类的定义和构造函数的定义是放在一起来完成的.function User(a, b, c){ // a b c是形参,属于局部变量.// 声明属性 (this表示当前对象)// User类中个属性:sno/sname/sage this.sno = a; this.sname = b; this.age = c;}//创建对象 var u1 = new User(1001,"张",25);//访问对象的属性 alert(u1.sno);//1001 alert(u1.sname);//张 alert(u1.age);//25//创建对象 var u2 = new User(1002,"李四",23);// 访问一个对象的属性,还可以使用这种语法 alert(u2["sno"]);//1002 alert(u2["sname"]);//李四 alert(u2["age"]);//23
定义类的另一种方法
emp = function(ename,sal){ //属性 this.ename = ename; this.sal = sal; } var e1 = new emp("Tom",2000); alert(e1.ename +"," + e1["sal"]);//Tom,2000 Product = function(pno,pname,price){ //属性 this.pno = pno; this.pname = pname; this.price = price; //函数 this.getPrice = function () { return this.price; } } var xigua = new Product(1001,"西瓜",4.0); var pri = xigua.getPrice(); alert(pri);//4.0
可以通过prototype这个属性来给类动态扩展属性以及函数
Product.prototype.getPname = function(){ return this.pname;}// 调用后期扩展的getPname()函数var pname = xigua.getPname();alert(pname);//西瓜// 给String扩展一个函数 String.prototype.suiyi = function () { alert("这是给String类型扩展的一个函数.....") } "abc".suiyi();//这是给String类型扩展的一个函数.....
转载地址:http://pauki.baihongyu.com/