文字列、数値、配列、日付などのようにして:JavaScriptでは、すべてのものがオブジェクトです。JavaScriptでは、オブジェクトは、プロパティとメソッドを持つことです。
データの基本タイプを習得する前の時間では、我々はすでにNumberオブジェクト、文字列オブジェクト、Arrayオブジェクトを知っています。以下のチャートを見てください
これは、データ型と対応するオブジェクトのさまざまなを紹介します。ここで注意することがあります:Pythonのコードを見て
= ' 123 ' 、B = STR(123 ) プリント(型()) プリント(型(B))
a、bは文字列型であるが、JavaScriptから
ここ = '123' ここで、B = 新しい文字列(123 ) console.log(typeof演算A) console.log(typeof演算 B)
タイプは文字列であり、Bはオブジェクトです。その新しいアプローチは、直接、新しいオブジェクトを作成することですで。
JSは、直接(Pythonで辞書に幾分似ている)からオブジェクトが定義されています
オブジェクトの定義
私たちは、オブジェクトを宣言するために同様の宣言辞書方法を指示することができます
VAR人= { '名前': '小さい強い'、 '年齢':12です}。 console.log(person.name)。 console.log(person.age)。
また、宣言するために、新しいオブジェクトとその道の割り当てを使用することができます
VaRの人= 新しいオブジェクト() person.name = "小强" person.age = 20 person.gender = "男性"
そして、それをトラバースする方法にカスタムオブジェクト?
VaRの人= { '名前': '小强'、 '年齢':12 }; 用(VaRの I 中の人){ console.log(I); console.log(人[I]); }
JSのポイントがあることに注意してください、キーのデフォルトのキーは、単語の文字列は引用符、(引用符で囲まれていないエラー)でないかもしれませんが、値が自動的に二重引用符(アポストロフィでなければなりません)二重引用符に変換します。
オブジェクトの値を取得します。
VAR人= { '名' ,: 'シャオ強' ,, '時代' ,: 12 }; VaRの K = '名前' console.log(person.name) console.log(人[K])
2つの間接的な方法と、取得した値に直接アクセスするための上記の値に記載の方法。
データオブジェクトの作成
基本的に2つの方法は、それを持っていると前のDateオブジェクトを作成します。
//は指定しない VAR D1 = 新しい新しいA日付を(); console.log(D1、typeof演算D1)。 console.log(d1.toLocaleString()); // 現地時間のフォーマット文字列に変わります // パラメータの日付文字列、指定した時間の日付オブジェクトの生成 VAR D2 = 新しい新しい日付(「2019年11月11日午前12時20分」) // で、より多くの自由時間形式を- 。/、缶のよう にconsole.log (D2)。 console.log(d2.toLocaleString())。 console.log(d2.toUTCString()); // 変換時間文字列形式のUTFへ // パラメータは、オブジェクトから生成されたタイムスタンプに、数ミリメートルある VAR D3 = 新しい新しい A日付(5000 ); console.log(d3.toLocaleString()) // パラメータの日付時間分秒ミリ秒 VAR D4 = 新しい新しい A日(2019,11,11,12,20,11,2000 ) console.log(D4)
日付オブジェクト
VaRの D = 新しい日付() d.getDate() // 日付を取得 d.getDay() //は週取得 d.getMonthを() d.getFullYear() d.getHours() d.getMinutes() d.getSeconds() d.getMilliseconds() d.getTimeは()// タイムスタンプを返します
ここで試してみてください、現在の時刻が「2019年12月12日12時12分日週の」フォーマットに応じて表示されます
私たちは、JSON形式のオブジェクトとJSON形式の文字列の違いを理解する必要があります
輸入JSON S = ' { "名前": "xiaoqiang"、 "年齢":22} ' プリント(json.loads(S))
上記の文字列sは、JSON形式の文字列で使用して、我々はJSONオブジェクトでJSを見て
var s = '{"name":"xiaoqiang","age":22}' //把字符串转换为JS内部对象 var ret = JSON.parse(s) console.log(ret,typeof ret) //把JS内部对象转换为字符串 var ret2 = JSON.stringify(ret); console.log(ret2,typeof ret2)
这是要熟练掌握的,因为在后面的学习中,我们对数据进行传输的时候就需要将数据进行JSON序列化/反序列化。
类似于Python里的正则表达式,但是据说巨坑一堆!
创建RegExp对象
//用变量的方式来创建 var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$") var reRet1 = reg1.test('xiaoqia_123') //创建了以字母开头,包含字母数字下划线,5-11位长 //直接以字符串的方式创建 var reRet2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test('xiaoqiang123');
第一个坑:正则表达式内一定不能有空格!!!定义字符串长度的时候{5,11},逗号前后不能有空格,否则语法不会报错,但是判断的返回值成了false。
第二个坑:test()内不传值就相当于传了个underfined,underfined经过正则判定返回值是true。
>/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test() <true
JS正则的两种模式
1g.——全局匹配
2.i——忽略大小写
var s = 'AaBbCc'; var s1 = s.replace(/a/,'1'); var s2 = s.replace(/a/g,'1'); var s3 = s.replace(/a/i,'1'); var s4 = s.replace(/a/ig,'1'); console.log(s1) //输出A1BbCc console.log(s2) //输出A1BbCc console.log(s3) //输出1aBbCc console.log(s4) //输出11BbCc
第三个坑:看看下面的代码
var r = /abc/g console.log(r.test('abc')) //返回true console.log(r.test('abc')) //返回false console.log(r.test('abc')) //返回true console.log(r.test('abc')) //返回false
当用正则表达式选用全局模式去检测一个完全匹配的字符串的时候,此时会引出一个lastIndex,lastIndex会记录上一次匹配成功的位置,然后下一次匹配的时候是从这个索引值开始的
var r = /abc/g console.log(r.test('abc')) //返回true console.log(r.lastIndex) //返回3 console.log(r.test('abc')) //返回false console.log(r.lastIndex) //返回0
那么就还回导致下面的误判
var r = /abc/g console.log(r.test('abc')) //返回true console.log(r.lastIndex) //返回3 console.log(r.test('123abc')) //返回true console.log(r.lastIndex) //返回6
我们其实是要完全匹配的,但是这里由于匹配是从第3个字符开始的,就返回了true
总之,就是尽量不要用全局模式去完全匹配字符串。
math的方法跟Python里的差不多,但是可能发现了,在JS里是不用专门导入方法的,直接用就可以了。
var x =2; var y = 3; Math.abs(x) Math.exp(x) Math.floor(x) //对x进行下舍入 Math.max(x,y) Math.min(x,y) Math.pow(x,y) Math.random() //返回0-1之间的随机数 Math.round(x) //取x四舍五入后的整数 Math.sin(x) Math.sqrt(x) Math.tan(x)