返回介绍

第十课时

发布于 2024-09-07 17:38:20 字数 14076 浏览 0 评论 0 收藏 0

上节回顾:

1.继承

  • 本质就是从一个 prototype 对象中把它的功能都 copy 到另一个 prototype 对象
  • 继承为什么要循环

2.call apply 方法的使用

  • func.call(obj) :调用 func 的时候,以 obj 这个对象的作用域去调用
  • 改变函数在调用的时候里面闭包的作用域
  • call(obj,arg1,arg2,arg3) ; call 第一个参数传对象,可以是 null 。参数以逗号分开进行传值,参数可以是任何类型。
    apply(obj,[arg1,arg2,arg3]) ; apply 第一个参数传对象,参数可以是数组或者 arguments 对象

知识点:

API application program interface

  • 第一:遇到问题
  • 第二:查资料或者学习 -> 解决问题
  • 第三:记住有这个功能
  • 第四:查资料(百度)

常用 API

  • 1. String
  • 2. Array
  • 3. Math Math.random();
  • 4. Date

日期型函数 Date

Date 对象方法

  • 声明
var myDate = new Date(); //系统当前时间

var myDate = new Date(yyyy, mm, dd, hh, mm, ss);

var myDate = new Date(yyyy, mm, dd);

var myDate = new Date(“monthName dd, yyyy hh:mm:ss”);

var myDate = new Date(“monthName dd, yyyy”);

var myDate = new Date(epochMilliseconds);
  • 获取时间的某部份
var myDate = new Date();

myDate.getYear(); //获取当前年份(2 位)

myDate.getFullYear(); //获取完整的年份(4 位,1970-????)

myDate.getMonth(); //获取当前月份(0-11,0 代表 1 月)

myDate.getDate(); //获取当前日(1-31)

myDate.getDay(); //获取当前星期 X(0-6,0 代表星期天)

myDate.getTime(); //获取当前时间(从 1970.1.1 开始的毫秒数) 时间戳!!

myDate.getHours(); //获取当前小时数(0-23)

myDate.getMinutes(); //获取当前分钟数(0-59)

myDate.getSeconds(); //获取当前秒数(0-59)

myDate.getMilliseconds(); //获取当前毫秒数(0-999)

myDate.toLocaleDateString(); //获取当前日期

myDate.toLocaleTimeString(); //获取当前时间

myDate.toLocaleString( ); //获取日期与时间
  • 计算之前或未来的时间
var myDate = new Date();

myDate.setDate(myDate.getDate() + 10); //当前时间加 10 天//类似的方法都基本相同,以 set 开头,具体参考第 2 点
  • 计算两个日期的偏移量
var i = daysBetween(beginDate,endDate); //返回天数

var i = beginDate.getTimezoneOffset(endDate); //返回分钟数
  • 检查有效日期
//checkDate() 只允许”mm-dd-yyyy”或”mm/dd/yyyy”两种格式的日期
if( checkDate(“2006-01-01”) ){ }

//正则表达式(自己写的检查 yyyy-mm-dd, yy-mm-dd, yyyy/mm/dd, yy/mm/dd 四种)

var r = /^(\d{2}|\d{4})[\/-]\d{1,2}[\/-]\d{1,2}$/;if( r.test( myString ) ){ }

字符串 String 型函数 API

js 下常用的字符串方法

  • 声明
var myString = new String(“Every good boy does fine.”);

var myString = “Every good boy does fine.”;
  • 字符串连接
var myString = “Every ” + “good boy ” + “does fine.”;

var myString = “Every “; myString += “good boy does fine.”;
  • 截取字符串
//截取第 6 位开始的字符

var myString = “Every good boy does fine.”;

var section = myString.substring(6); //结果: “good boy does fine.”

//截取第 0 位开始至第 10 位为止的字符

var myString = “Every good boy does fine.”;

var section = myString.substring(0,10); //结果: “Every good”

//截取从第 11 位到倒数第 6 位为止的字符

var myString = “Every good boy does fine.”;

var section = myString.slice(11,-6); //结果: “boy does”

//从第 6 位开始截取长度为 4 的字符

var myString = “Every good boy does fine.”;

var section = myString.substr(6,4); //结果: “good”
  • 转换大小写
var myString = “Hello”;

var lcString = myString.toLowerCase(); //结果: “hello”

var ucString = myString.toUpperCase(); //结果: “HELLO”
  • 字符串比较
var aString = “Hello!”;

var bString = new String(“Hello!”);

if( aString == “Hello!” ){ } //结果: true

if( aString == bString ){ } //结果: true

if( aString === bString ){ } //结果: false (两个对象不同,尽管它们的值相同)
  • 检索字符串
var myString = “hello everybody.”;

// 如果检索不到会返回-1,检索到的话返回在该串中的起始位置

if( myString.indexOf(“every”) > -1 ){ } //结果: true
  • 查找替换字符串
var myString = “I is your father.”;

var result = myString.replace(“is”,”am”); //结果: “I am your father.”
  • 特殊字符
    • \b : 后退符
    • \t : 水平制表符
    • \n : 换行符
    • \v : 垂直制表符
    • \f : 分页符
    • \r : 回车符
    • \” : 双引号
    • \’ : 单引号
    • \\ 反斜杆
  • 将字符转换成 Unicode 编码
var myString = “hello”;

var code = myString.charCodeAt(3); //返回”l”的 Unicode 编码(整型)

var char = String.fromCharCode(66); //返回 Unicode 为 66 的字符
  • 将字符串转换成 URL 编码
var myString = “hello all”;

var code = encodeURI(myString); //结果: “hello%20all”

var str = decodeURI(code); //结果: “hello all”

//相应的还有: encodeURIComponent() decodeURIComponent()

Math 对象型

  • Math.abs(num) : 返回 num 的绝对值
  • Math.acos(num) : 返回 num 的反余弦值
  • Math.asin(num) : 返回 num 的反正弦值
  • Math.atan(num) : 返回 num 的反正切值
  • Math.atan2(y,x) : 返回 y 除以 x 的商的反正切值
  • Math.ceil(num) : 返回大于 num 的最小整数
  • Math.cos(num) : 返回 num 的余弦值
  • Math.exp(x) : 返回以自然数为底,x 次幂的数
  • Math.floor(num) : 返回小于 num 的最大整数
  • Math.log(num) : 返回 num 的自然对数
  • Math.max(num1,num2) : 返回 num1num2 中较大的一个
  • Math.min(num1,num2) : 返回 num1num2 中较小的一个
  • Math.pow(x,y) : 返回 xy 次方的值
  • Math.random() : 返回 01 之间的一个随机数
  • Math.round(num) : 返回 num 四舍五入后的值
  • Math.sin(num) : 返回 num 的正弦值
  • Math.sqrt(num) : 返回 num 的平方根
  • Math.tan(num) : 返回 num 的正切值
  • Math.E : 自然数( 2.718281828459045 )
  • Math.LN2 : 2 的自然对数( 0.6931471805599453 )
  • Math.LN10 : 10 的自然对数( 2.302585092994046 )
  • Math.LOG2E : log 2 为底的自然数( 1.4426950408889634 )
  • Math.LOG10E : log 10 为底的自然数( 0.4342944819032518 )
  • Math.PI : π(3.141592653589793)
  • Math.SQRT1_2 : 1/2 的平方根( 0.7071067811865476 )
  • Math.SQRT2 : 2 的平方根( 1.4142135623730951 )

Number 型 常用的数字函数

  • 声明
var i = 1;

var i = new Number(1);
  • 字符串与数字间的转换
var i = 1;

var str = i.toString(); //结果: “1”

var str = new String(i); //结果: “1”

i = parseInt(str); //结果: 1

i = parseFloat(str); //结果: 1.0

//注意: parseInt,parseFloat 会把一个类似于”32G”的字符串,强制转换成 32
  • 判断是否为有效的数字
var i = 123; var str = “string”;

if( typeof i == “number” ){ } //true

//某些方法(如:parseInt,parseFloat) 会返回一个特殊的值 NaN(Not a Number)

//请注意第 2 点中的[注意],此方法不完全适合判断一个字符串是否是数字型!!

i = parseInt(str);

if( isNaN(i) ){ }
  • 数字型比较
//此知识与[字符串比较]相同

- **小数转整数**

var f = 1.5;

var i = Math.round(f); //结果:2 (四舍五入)

var i = Math.ceil(f); //结果:2 (返回大于 f 的最小整数)

var i = Math.floor(f); //结果:1 (返回小于 f 的最大整数)
  • 格式化显示数字
var i = 3.14159;

//格式化为两位小数的浮点数

var str = i.toFixed(2); //结果: “3.14”

//格式化为五位数字的浮点数(从左到右五位数字,不够补零)

var str = i.toPrecision(5); //结果: “3.1415”
  • X 进制数字的转换

var i = parseInt(“0x1f”,16);

var i = parseInt(i,10);

var i = parseInt(“11010011”,2);
  • 随机数
//返回 0-1 之间的任意小数

var rnd = Math.random();

//返回 0-n 之间的任意整数(不包括 n)

var rnd = Math.floor(Math.random() * n)

5. Regex

//在这个最大的对象的原型上加一个 extends 方法 使得下面所有的原型 都有这个方法
//这个原型的作用是通过迭代 复制传进来的构造器的所有的原型的方法

Object.prototype.extends = function(parent){
//console.log(parent.prototype);

for(var prop in parent.prototype){
//console.log(prop);//eat extends
this.prototype[prop] = parent.prototype[prop];//复制传进来的构造器的所有的原型的方法给当前正在调用这个方法的对象
}
}

function Person(name){
this.name = name;
}
Person.prototype = {
eat:function(){
alert(this.name+"在吃饭");
}
};

function Father(name){
this.name = name;
}

Father.extends(Person);//extends 方法是最大的对象 Object 加的方法 所有的子孙 构造器都有这个方法

var f = new Father("小头爸爸");
f.eat();

一些图示

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文