JS基础---->javascript的基础(二)
记载javascript的一些基础的知识。我们在春风秋雨中无话不说,又在春去秋来中失去了联系。
js中string类型
一、字符方法:charAt() 和 charCodeAt()
var stringValue = "hello world";
console.log(stringValue.charAt(1)); //
console.log(stringValue.charCodeAt(1)); //
二、字符串操作方法: concat()
var stringValue = "hello ";
var result = stringValue.concat("world", "!");
console.log(result); // hello world!
三、slice() 、substr() 和 substring()方法:
var stringValue = "hello world";
console.log(stringValue.slice(3, 7)); // lo w
console.log(stringValue.substring(3, 7)); // lo w
console.log(stringValue.substr(3, 7)); // lo worl
四、字符串位置方法: indexOf() 和 lastIndexOf()
var stringValue = "hello world";
console.log(stringValue.indexOf("o")); //
console.log(stringValue.lastIndexOf("o")); //
这两个方法都可以接收可选的第二个参数,表示从字符串中的哪个位置开始搜索
var stringValue = "hello world";
console.log(stringValue.indexOf("o", 6)); //
console.log(stringValue.lastIndexOf("o", 6)); //
五、 trim() 方法
var stringValue = " hello world ";
var trimmedStringValue = stringValue.trim();
console.log(trimmedStringValue); // hello world
六、字符串的模式匹配方法:match()、search()、replace()和 split()方法。
var text = "cat, bat, sat, fat";
var pattern = /.at/;
var matches = text.match(pattern); // 与 pattern.exec(text)相同
console.log(matches.index); //
console.log(matches[0]); // cat
console.log(pattern.lastIndex); //
search方法只能从头开始搜索:
var text = "cat, bat, sat, fat";
var pos = text.search(/at/);
console.log(pos); //
replace方法接受两个参数:第一个参数可以是一个 RegExp 对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参数可以是一个字符串或者一个函数:
var text = "cat, bat, sat, fat";
var result = text.replace("at", "ond");
console.log(result); // cond, bat, sat, fat
result = text.replace(/at/g, "ond");
console.log(result); // cond, bond, sond, fond
split()方法基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是一个 RegExp 对象:
var colorText = "red,blue,green,yellow";
var colors1 = colorText.split(","); // ["red", "blue", "green", "yellow"]
var colors2 = colorText.split(",", 2); // ["red", "blue"]
七、 localeCompare() 方法:
var stringValue = "yellow";
console.log(stringValue.localeCompare("brick")); //
console.log(stringValue.localeCompare("yellow")); //
console.log(stringValue.localeCompare("zoo")); // -1
js中的面向对象
一、数据属性包含一个数据值的位置。在这个位置可以读取和写入值
Configurable:表示能否通过delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性
Enumerable:表示能否通过for-in 循环返回属性
Writable:表示能否修改属性的值
Value:包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined
要修改属性默认的特性,必须使用 ECMAScript 5 的 Object.defineProperty() 方法。
var person = {};
Object.defineProperty(person, "name", {
writable: false,
value: "Nicholas"
});
console.log(person.name); // Nicholas
person.name = "Greg";
console.log(person.name); // Nicholas
二、访问器属性:
Configurable:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性
Enumerable:表示能否通过 for-in 循环返回属性
Get:在读取属性时调用的函数。默认值为 undefined
Set:在写入属性时调用的函数。默认值为 undefined
访问器属性不能直接定义,必须使用 Object.defineProperty() 来定义:
var book = {
name: "huhx"
};
Object.defineProperty(book, "name", {
get: function() {
console.log("get method.");
},
set: function() {
console.log("set method.");
}
});
book.name = "linux"; // set method.
book.name; // get method.
三、使用 ECMAScript 5 的 Object.getOwnPropertyDescriptor() 方法,可以取得给定属性的描述符。Object.definePro-perties() 方法可以通过描述符一次定义多个属性。
var love = {};
Object.defineProperties(love, {
name: {
value: "huhx"
},
year: {
get: function() {
console.log("get method.");
},
set: function() {
console.log("set method.");
}
}
});
var descriptor = Object.getOwnPropertyDescriptor(love, "name");
console.log(descriptor.value); // huhx
console.log(descriptor.configurable); // false
console.log(typeof descriptor.get); // undefined
var yearDescriptor = Object.getOwnPropertyDescriptor(love, "year");
console.log(yearDescriptor.value); // undefined
console.log(yearDescriptor.configurable); // false
console.log(typeof yearDescriptor.get); // function
四、判断属性是否是原型的:
- hasOwnProperty() 方法可以检测一个属性是存在于实例中,还是存在于原型中。这个方法只在给定属性存在于对象实例中时,才会返回true。
- in操作符会在通 过对象能够访问给定属性时返回 true ,无论该属性存在于实例中还是原型中。
function People() {}
People.prototype.name = "huhx";
var people = new People();
people.age = 123;
console.log(people.hasOwnProperty("name")); // false
console.log(people.hasOwnProperty("age")); // true
console.log("name" in people); // ture
js创建对象的模式
一、工厂模式:
function createPerson(name, age, job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function() {
alert(this.name);
};
return o;
}
var person1 = createPerson("Nicholas", 29, "Software Engineer");
二、构造函数模式:
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function() {
alert(this.name);
};
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
三、原型模式:
function Person() {}
Person.prototype.name = "huhx";
Person.prototype.sayHello = function() {
console.log(this.name);
}
var person1 = new Person();
var person2 = new Person();
console.log(person1.sayHello == person2.sayHello); // true
四、
Json对象的使用
js中关于json对象有两个重要的方法:
- stringify()方法:把一个Javascript对象序列化为一个JSON字符串。
- parse()方法:把字符串解析为原生的JavaScript对象。
var book = {
name: "Thinking in Java",
price: 100,
author: "huhx"
}
var jsonText = JSON.stringify(book);
console.log(jsonText); // {"name":"Thinking in Java","price":100}
var stringText = JSON.parse(jsonText);
console.log(stringText); // Object {name: "Thinking in Java", price: 100}
var someInfo = JSON.stringify(book, ["name", "author"]);
console.log(someInfo); // {"name":"Thinking in Java","author":"huhx"}
var someStrInfo = JSON.parse(jsonText, function(key, value) {
if (key == "name") {
return "Java";
} else {
return value;
}
});
console.log(someStrInfo); // Object {name: "Java", price: 100, author: "huhx"}
在序列化对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为undefined的任何属性也都会被跳过。
var person = {
age: undefined,
name: "huhx"
}
console.log(JSON.stringify(person)); // {"name":"huhx"}
友情链接
JS基础---->javascript的基础(二)的更多相关文章
- 基础JavaScript练习(二)总结
任务目的 学习与实践JavaScript的基本语法.语言特性 练习使用JavaScript实现简单的排序算法 任务描述 基于上一任务 限制输入的数字在10-100 队列元素数量最多限制为60个,当超过 ...
- 零基础JavaScript编码(二)
任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...
- JS基础---->javascript的基础(一)
记录一些javascript的基础知识.只是一起走过一段路而已,何必把怀念弄的比经过还长. javascript的基础 一.在检测一个引用类型值和 Object 构造函数时, instanceof 操 ...
- JavaScript基础——JavaScript语法基础(笔记)
JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...
- 任务十四:零基础JavaScript编码(二)
任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...
- js基础--javaScript数据类型你都弄明白了吗?绝对干货
欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...
- 新手怎么学JS?JavaScript基础入门
新手应该怎么学习JS?JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写Ja ...
- php面试题之二——Javascript(基础部分)
二.JavaScript部分 1. JS 表单弹出对话框函数是?获得输入焦点函数是? 弹出对话框函数:alert(), prompt(), confirm() 获得输入焦点函数:focus() 2. ...
- 快速掌握JavaScript面试基础知识(二)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
随机推荐
- 解决ubuntu上网慢的方法
在ubuntu下用firefox等浏览器上网,往往比在windows下上网要慢好多,但细心的人会发现,慢的时间是花在DNS查找上面了.那么 我们可以在本机缓存DNS,也就是在本机架设一个DNS代理服务 ...
- Winform控件学习笔记【第四天】——WebBrowser
常用方法 Navigate(string urlString);//浏览urlString表示的网址 Navigate(System.Uri url);//浏览url表示的网址 Navigate(st ...
- Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套
原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...
- Jenkins+Github配置【转】
一.GitHub上配置 前提:Jenkins能正常打开 将本地文件上传到GitHub上:进入终端 cd Documents cd project git clone https://github.co ...
- 算法-Java组合
code: import org.assertj.core.util.Lists; import java.util.ArrayList; import java.util.Collections; ...
- 【Intel AF 2.1 学习笔记三】
AF中自带一些Css矢量图标,使用时需要设置class,例如下面代码显示一个左箭头图标: <a class="icon left"></a> AF中可用的图 ...
- 安卓开发笔记——ListView加载性能优化ViewHolder
在前不久做安卓项目的时候,其中有个功能是爬取某网站上的新闻信息,用ListView展示,虽然做了分页,但还是觉得达不到理想流畅效果. 上网查阅了些资料,发现一些挺不错的总结,这里记录下,便于复习. 当 ...
- Thinkphp5笔记九:路由设置,隐藏indx.php
网站根目录下.htaccess <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on ...
- Java初学者不可不知的MyEclipse的设置技巧(自动联想功能)
最近初学Java,正在使用MyEclipse来编写新的项目,刚开始打开MyEclipse感觉这个工具既陌生又熟悉,熟悉之处在于编辑器的几大共通之处它都具备,比如说基本的设置.编辑区.调试区都是类似的, ...
- lua封装的位运算
1.移位运算基础 --与 同为1,则为1 --或 有一个为1,则为1 --非 true为 false,其余为true --异或 相同为0,不同为1 --ZZMathBit = {} function ...