关于this,作用域,属性,原型链的一个小练习

function p () {
    this.name = 'x';
    var name = 'y';
    this.getName = function () {
        return name;
    }
}
// 求值
console.log(new p().getName());

getName方法里面返回name值,此时name值从作用域里面找,即var name = 'y';,返回y;
将getName方法里面的return name;改成return this.name;,这时会从this里面找属性为name的值,即'this.name = 'x';',返回x(之前一直觉得this取决于定义环境,而不取决于执行环境,后来得到一种说法是this取决于调用环境,包括方法调用、函数调用、构造器调用和apply/call调用,其实这边的调用和定义是一个意思,比如上面的this便是构造器调用)。

function p () {
//    this.name = 'x';
//    var name = 'y';
    this.getName = function () {
        return this.name;
    }
}
p.prototype.name = 'z';
// 求值
console.log(new p().getName());

若找不到属性便会在原型链上找name,即p.prototype.name = 'z';,返回z。

for…of 与 for…in 区别

一、for…of

1.定义

for…of 语句遍历可迭代对象(包括数组、Set 和 Map 结构、arguments 对象、DOM NodeList 对象、字符串等)。

2.语法

for (variable of iterable) {
    //statements
}

3.示例

<ul>
    <li>mazey</li>
    <li>luna</li>
    <li>cherrie</li>
</ul>
<script>
// 数组
let arr = ['mazey', 'luna', 'cherrie'];
for (let v of arr) {
    console.log(v);
}
// mazey luna cherrie

// 字符串
let str = 'mlc';
for (let v of str) {
    console.log(v);
}
// m l c

// 类数组对象
let obj = {
    0: 'mazey',
    1: 'luna',
    2: 'cherrie',
    length: 3
};
// 需使用Array.from转换成可迭代对象
for (let v of Array.from(obj)) {
    console.log(v);
}
// mazey luna cherrie

// Set
let s = new Set(['mazey', 'luna', 'cherrie']);
for (let v of s) {
    console.log(v);
}
// mazey luna cherrie

// Map
let m = new Map([
    ['name0', 'mazey'],
    ['name1', 'luna'],
    ['name2', 'cherrie']
]);
for (let [i, v] of m) {
    console.log(v);
}
// mazey luna cherrie

// DOM NodeList
let domList = document.querySelectorAll('li');
for (let v of domList) {
    console.log(v.innerText);
}
// mazey luna cherrie
</script>

二、for…of 与 for…in 区别

1.for…in 遍历键名,for…of 遍历键值

let arr = ['mazey', 'luna', 'cherrie'];
for (let k in arr) {
    console.log(k);
}
// 0 1 2
for (let v of arr) {
    console.log(v);
}
// mazey luna cherrie

2.for…in 会把对象上手动添加的属性和原型上的属性暴露出来

let obj = {
    0: 'mazey',
    1: 'luna',
    2: 'cherrie',
    length: 3
};
obj.name = 'objName';
for (let k in obj) {
    console.log(k);
}
// 0 1 2 length name
for (let v of Array.from(obj)) {
    console.log(v);
}
// mazey luna cherrie

三、for…of 其它优点

1.相对于数组自带的 forEach 方法,for…of 可以与 break、continue 和 return 配合使用。
2.正确识别32位 UTF-16 字符。

JavaScript理解(object.getName = object.getName)()这段代码

var name = "The Window";
var object = {
    name : "My Object",
    getName: function(){
         return this.name;
    }
};
(object.getName = object.getName)(); // The Window

我的理解是:
this取决于定义环境而不取决于执行环境。

在这里

(object.getName = object.getName)();

相当于

(object.getName = function () {
    return this.name;
})();

// 拆分开来看
function () {
    return this.name;
}
// 这里的this = window
// 然后window.name在前面已经定义过了 var name = "The Window"; 定义全局变量
// 所以实际上执行的是
(function () {
     return this.name;
 })(); // The Window

ES6 Promise对象then方法链式调用

then()方法的作用是Promise实例添加解决(fulfillment)和拒绝(rejection)状态的回调函数。then()方法会返回一个的Promise实例,所以then()方法后面可以继续跟另一个then()方法进行链式调用。

let p = new Promise((resolve, reject) => {
    setTimeout(resolve, 1000, 'success');
});
p.then(
    res => {
        console.log(res);
        return `${res} again`;
    }
)
    .then(
        res => console.log(res)
    );
// 连续
// success
// success again

但是前一个then()方法中的回调函数中又可能返回一个Promise实例,这时候后面一个then()方法中的回调函数会等前一个Promise实例的状态发生变化才会调用。

let p = new Promise((resolve, reject) => {
    setTimeout(resolve, 1000, 'success');
});
p.then(
    res => {
        console.log(res);
        return new Promise((resolve, reject) => {
            setTimeout(resolve, 1000, 'success');
        });
    }
)
    .then(
        res => console.log(res)
    );
// 相隔1000ms
// success
// success

ES6通过WeakMap解决内存泄漏问题

一、Map

1.定义

Map对象保存键值对,类似于数据结构字典;与传统上的对象只能用字符串当键不同,Map对象可以使用任意值当键。

2.语法

new Map([iterable])

属性

  • size:返回键值对的数量。

操作方法

  • set(key, value):设置(新增/更新)键key的值为value,返回Map对象。
  • get(key):读取键key的值,没有则返回undefined。
  • has(key):判断一个Map对象中是否存在某个键值对,返回true/false。
  • delete(key):删除某个键值对,返回true/false。
  • clear():清除Map对象中所有键值对。

遍历方法

  • keys():返回键名的Iterator对象。
  • values():返回键值的Iterator对象。
  • entries():返回键值对的Iterator对象。
  • forEach((value, key, map) => {}):遍历Map对象所有键值对。

3.示例

操作方法

let m = new Map([
    ['foo', 11],
    ['bar', 22]
]);
m.set('mazey', 322)
    .set('mazey', 413);
console.log(m); // {"foo" => 11, "bar" => 22, "mazey" => 413}
console.log(m.has('mazey')); // true
m.delete('mazey');
console.log(m.has('mazey')); // false
m.clear();
console.log(m); // {}

遍历方法

let m = new Map([
    ['foo', 11],
    ['bar', 22],
    ['mazey', 413]
]);
console.log(m); // {"foo" => 11, "bar" => 22, "mazey" => 413}
console.log(m.keys()); // MapIterator {"foo", "bar", "mazey"}
console.log(m.values()); // MapIterator {11, 22, 413}
console.log(m.entries()); // MapIterator {"foo" => 11, "bar" => 22, "mazey" => 413}
m.forEach((value, key, map) => {
    console.log("键:%s,值:%s", key, value);
});
// 键:foo,值:11
// 键:bar,值:22
// 键:mazey,值:413

二、WeakMap

1.定义

WeakMap对象保存键值对,与Map不同的是其键必须是对象,因为键是弱引用,在键对象消失后自动释放内存。

2.语法

new WeakMap([iterable])

方法

  • set(key, value):设置(新增/更新)键key的值为value,返回WeakMap对象。
  • get(key):读取键key的值,没有则返回undefined。
  • has(key):判断一个WeakMap对象中是否存在某个键值对,返回true/false。
  • delete(key):删除某个键值对,返回true/false。
注意

因为WeakMap的特殊的垃圾回收机制,所以没有clear()方法。

3.示例

let obj = {
    foo: 11
};
let wm = new WeakMap();
wm.set(obj, 413322);
console.log(wm); // {{…} => 413322}
console.log(wm.has(obj)); // true

三、通过WeakMap解决内存泄漏问题

当使用Dom对象绑定事件时,Dom对象消失后若没有及时释放内存(置null),便会一直存在内存中。
使用WeakMap保存Dom对象不会出现这样的问题,因为Dom对象消失后,JS的垃圾回收机制便会自动释放其所占用的内存。

<button type="button" id="btn">按钮</button>
<script>
let wm = new WeakMap();
let btn = document.querySelector('#btn');
wm.set(btn, {count: 0});
btn.addEventListener('click', () => {
    let v = wm.get(btn);
    v.count++;
    console.log(wm.get(btn).count);
});
// 1 2 3 4 5...
</script>

ES6通过Set数组去重

一、Set

1.定义

Set对象是ES6中新定义的数据结构,类似于数组,它允许你存储任何类型的唯一值,不管是原始值还是对象引用。

2.语法

new Set([iterable])
  • iterable:可迭代对象,默认为空。

Set方法

  • add:添加值,返回Set本身。
  • delete:删除值,返回是否删除成功。
  • has:判断是否拥有这个值,返回true/false。
  • clear:清除所有值。

3.示例

let s = new Set();
s.add(4);
s.add(1);
s.add(3);
s.add(3);
s.add(2);
s.add(2);
console.log(s); // {4, 1, 3, 2}
console.log(s.has(4)); // true
s.delete(4);
console.log(s); // {1, 3, 2}
console.log(s.has(4)); // false
s.clear();
console.log(s); // {}

二、通过Set数组去重

利用扩展运算符可以将Set转换成真正意义上的数组。

let arr = [4, 1, 3, 3, 2, '2'];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [4, 1, 3, 2, "2"]

JavaScript启示录 – Cody Lindley 著 / 徐涛 译

核心知识点基本都讲了,JavaScript入门的话是很好的一本书。

2014年3月第1版

Function()参数

Function()构造函数采用不定数量的参数,但Function()构造函数的最后一个参数是一个包含具有函数体语句的字符串。在最后一个参数之前传递给构造函数的任何参数都可用于创建的函数。也可以将多个参数放在一起以逗号分隔形成字符串进行传递。

let add = new Function('a', 'b', 'return a + b');
// 等于
let add = new Function('a, b', 'return a + b');
// 等于
let add = function (a, b) {
    return a + b;
};
// 等于
function add (a, b) {
    return a + b;
}

arguments.callee属性

arguments对象拥有名为callee的属性,它是对当前执行函数的引用。该属性可以用于从函数的作用域内引用函数(如arguments.callee) – 自我引用(严格模式use strict;不能使用)。当函数需要递归调用时,它非常有用。

function SumNum (num) {
    if (num === 1) {
        return num
    }
    return num + arguments.callee(--num);
}
console.log(SumNum(5)); // 15

// 尾递归
function SumNumTail (num, total) { // total = 0 设置默认值会报错,因为严格模式不能使用arguments.callee
    if (num === 1) {
        return total + 1;
    }
    total += num
    return arguments.callee(--num, total);
}
console.log(SumNumTail(5, 0)); // 15

可以通过利用callee属性获得长度值,即arguments.callee.length。

自调用的匿名函数语句

自调用的匿名函数语句。

(function (msg) {
    console.log(msg);
})('Hello, 2018!'); // Hello, 2018!
// 等于
(function (msg) {
    console.log(msg);
}('Hello, 2018!')); // Hello, 2018!
// 等于
!function (msg) {
    console.log(msg);
}('Hello, 2018!'); // Hello, 2018!

创建继承连

设计原型继承的目的是要在传统的面向对象编程语言中找到模仿继承模式的继承链。继承只是一个对象可以访问另外一个对象的属性。具体做法是,实例化想要继承的对象,将该对象实例作为要继承该对象实例的函数的prototype属性。完成之后,对象之间有一个链接(也称为proto),可以通过属性查找将可用属性扩展至对象。

function f0 () {}
function f1 () {}
f1.prototype = new f0();
console.log(f1.prototype.__proto__ === f0.prototype); // true

识男手册 – 芒来小姐

识渣男手册。

在豆瓣阅读书店查看:https://read.douban.com/column/381842/
本作品由 芒来小姐 授权豆瓣阅读全球范围内电子版制作与发行。
© 版权所有,侵权必究。

  • 渡边淳一在《男人这回事》里写道,男人的价值体现在能否顺利繁衍后代,能够照顾好家庭与事业的男人,称之为有男子气概的男人。渣男是没有男子气概的男人,他们会呵护女友,但是绝不会站在女人的立场为她们考虑,更别提什么未来!这不叫呵护,叫讨好!你看他平时对你无微不至吧,如果你不跟他上床他还会做这些吗?醒醒吧傻姑娘,他做的一切不是为了你,而是为了你的逼!
  • 初级渣最明显的特点就是为鸡巴打工,见女人就推,有机会就上,一旦把你推倒了,就消失在茫茫人海从此天各一方,你再打他的电话说不定还是空号——或者欠费。
  • 越是自尊心强烈的男人,越会想办法讨女人开心来凸显自己的男人味,暧昧的女人越多,越证明他们有着填不满的虚荣心。不太在乎面子的男人,往往不太擅长应对女人,对女人的欲望也没有那么强烈。渣男出自自尊心强烈的男人,无穷的征服欲和虚荣心,让他们不知疲倦的奔走在泡妞的大道上,只要是看得顺眼的妞,都会习惯性的调戏一下,如果有机会深入,他们绝不会错过机会,但一旦插上了旗帜(发生了关系),他们的穷追猛打就会戛然而止,这个女人之后如何也就随便了。他们的认真永远在上床之前,他们的目标永远在下一个女人。
  • 无论是强势的妹子也好,柔弱的妹子也好,女汉子也好,小女子也好,聪明的女人在爱情面前都放慢了脚步,沉住气。无视“剩女”刺耳的舆论,无视父母劝嫁的唠叨和朋友结婚的赶场。沉住气,才能慧眼识人。
  • 找到好男人,请你珍惜,也不要仗着自己年轻美丽,把好男人当做傻瓜使唤。在爱情中,投机取巧、寻找捷径的人很难收获真正的幸福,因为真正的幸福属于脚踏实地、勤奋努力的人。在寻找好男人之前,请先确定你也是一个“好女人”。
  • 男人骨子里是一只小狗,你得顺毛捋,才能让他开开心心的听你的话,如果你踹他一脚,他会飞快的跑掉。
  • 张爱玲在胡兰成爱上自己之前,就交出了主动权,给出了自己心上的花,任他牵着鼻子走,心里割下道道伤口,一声不吭。闹也不闹,好似爱就爱了,我付出,你随意,愿走不留。我们觉得这很美,是因为我们没有看见胡兰成光着身子和无数女人插科打诨。我们觉得这很美,是因为我们不用代替张爱玲过日子。现实生活中谁想当张爱玲?我是个俗人,宁可自己是胡兰成,没心没肺倒还乐得逍遥。
  • 矜持是旧社会保守下来的陈腔滥调,也是女人该有的美德。说它是故弄玄虚也好,是保守传统也罢,如果你不需要男人的宠爱,靠自己就能获得足够的安全感,那你大可抛开矜持,做自己的独立个性。如果你不是这样的女人,你只是一个渴望爱、渴望一个可靠臂膀的普通女孩,那就守好女人的本分,守好自己的贞操,守好父母的叮嘱,做一个矜持稳重的女人。像张爱玲那样独立自强的新时代女人,最后也香消玉损于得不到胡兰成的郁闷。除非你想挑战传统,保守点准没错。
  • 你若是不想做传统的保守女人,那我赞你一个有骨气,但偏偏这样做的姑娘骨子里又很传统,床单已经滚了,跑来找我哭诉:嘤嘤嘤,好后悔。后悔你就不要做,做了就别认了,处女膜丢了也就少块肉,没了它照样是条好汉,可你这样做值得吗?值得吗?请你做之前问问自己:值得吗?
  • 既然是传统的女孩,那就大大方方的保守起来!别那么缺爱,一副爱饥渴的模样,纠结别人不要你,稍微引诱一下,立马殷勤的脱下裤子。两个人光着屁股毛腿纠缠在一起,真不能证明你多有魅力。相反,一个大大方方说“不”的女人,更加惊艳美丽,爱到不行。
  • 随着两人恋情的加深,男人的下半身尝够了新鲜,逐渐偃旗息鼓,大脑才开始占主动,才开始认真思考这段恋情的走向。这个时候,男人才开始思考与责任、担当、建立家庭和繁衍后代相关的事情。
  • 心里有屎,看什么都是屎,心如明镜台,何处惹尘埃?
  • 在网络上产生浪漫感情的男女,如果想要使两人的关系得到进一步的发展,见面是必经的过程。
  • 事实上,大多数渣男都是懦弱的自私鬼,他们比任何人都清楚自己在堕落,但没有勇气停止自甘堕落。
  • 除了旺盛的性欲,第二个男人无法自控的欲望,就是强烈的自尊心。
  • 判断男人是否成功有两个标准:一是成家,二是立业。成家和立业相辅相成,一个男人如何对待自己的工作,很大程度上也体现了他们的恋爱观和婚姻观。
  • 基督教形容人的恶习为“七宗罪”,骄傲、懒惰、色欲、愤怒、贪婪、嫉妒、暴食,这是抽象的说法,具体到现实中,便是我们在男人身上常见的恶习:赌博、酗酒、家暴、小心眼、贪得无厌、迷恋肉体关系,等。
  • 一个男人如果在你面前表现得像个十足好男人,那是因为他想追你。一个男人如果让你看见他“像”个好男人,那是因为他想追你的闺蜜。一个男人陪你聊天为你解闷护送你上下学,那是因为他想让你认为他是个靠得住的男人,希望你能多依赖他。一个男人如果对其他女人都很好唯独跟你有些不待见,那是因为他对你有些异样的感情却不知如何说出来。
  • 如果对方只是想在你身上追求性,发现你不是能“轻易搞定”的女人后,他们就不会在你身上耗费太多功夫,说穿了他们只是想图个乐子,没有人愿意为自己找麻烦,搞不定你自然会去找下一个。
  • 爱上一个人渣不可怕,可怕的是你嫁给了一个人渣。
  • 日常生活中不难发现,许多“小三”属性的女人都容易招来一句唾骂:不要脸。这三个字正是她们成功的秘诀。为了得到心爱男人的心,各路女王们手段尽出、投其所好、八仙过海、各显神通,但最后,居然都输给了一个不会打扮、没啥气质、笑起来有点憨厚的好脾气姑娘。
  • 渣男的四种心态:1.老子不缺女人。2.世上不缺傻姑娘。3.上过的女人越多越显得我能耐。4.我举世无双。
  • 因为“各取所需”的关系在一起的男女双方,如果在彼此的婚姻中缺失了爱情,又不想委屈自己,便会想办法从其他人身上补足缺失的爱情,这是出轨的源头。
  • 渣男是可恶的,渣女也同样可恶;渣男会玩弄女人,渣女同样会伤害男人。被渣女所伤害的男人变成了渣男,又会让更多的女人变成渣女,这是渣男和渣女形成的根本原因。
  • 真正对女人形成杀伤力的渣男,是真正不把女人当回事的男人,但是表面上看他们又十分尊重女性,装逼水平可谓已经炉火纯青。
  • 电视剧“东京爱情故事”里,赤名莉香爱上了完治,一遍又一遍大哭着说:我爱你,我爱你!
  • 搭讪最紧要的,不是让对方感觉“你让我感到热情”,也不是“你让我感到无害的”,更不是“你是有钱人/大美人”,而是“你让我感到轻松”。这不仅是搭讪之道,也是人与人的相处之道。你不需要花太多的钱,也不需要太多的时间,仅仅是让对方感到心情愉快,便能促进两人之间的关系。
  • 中学的时候有一类小说特别风靡,大概是讲平凡的姑娘被出众的男生环绕,最后终于挑出了一个真爱的故事。

大龄处女有什么问题 – 朱欢尘

流水帐,女主一定程度上为男人而活。

在豆瓣阅读书店查看: https://read.douban.com/ebook/36476119/
本作品由 朱欢尘 授权豆瓣阅读全球范围内电子版制作与发行。
© 版权所有,侵权必究。

章节:2 处与非处之战

其实处女不处女的,都是男人在乎,攻击非处的是男人不是处女。女生何必为了男人的观点互相踩踏?

贞操这个东西,到底是属于男人,还是属于女人呢?孙一清曾经思考过这个问题,得出的结论是它实际上是属于男人的。男人造出了贞操这个观念,要女人好好珍视它,并在适当的时机献给男人。所谓适当的时机,不可过早,否则就有不洁之嫌。也不可过晚,否则就要被归类为大龄处女。因而“处女”这个称号,在年轻时候多少是带着一点正面意义;而当到了一定年纪,摇身一变成为大龄处女之后,就变成了负面意义,仿佛一瓶罐头过了保质期。

章节:7 一个男生朋友

你如果不想要发生超出自己控制的事情,就不要冒险,一定要一开始就拒绝呀。否则你后来可能就拒绝不了了。

章节:8 经典的传世谎言

这个世界就是莫名其妙把“爱”挂在嘴上个人太多了,才这样乌烟瘴气。

她想,可能真爱这个东西,就是跟鬼一样,听过的人多,见过的人少。

性之所以重要,很大程度上是因为它对男人们很重要。如果告诉男人们,对女性来说性根本没那么重要,他们会怎么想?

新名字的故事 – 埃莱娜·费兰特

两个女性的成长和自我救赎。

人民文学出版社 / 2017-03

  • “政治是很丑陋的,但对于赚钱很重要。”
  • 他猛地趴在地上,疯了似的往嘴里塞土。
  • “你们就像小孩一样,相互推卸责任。”“你不相信我?”“不,马尔切洛,我相信你,但你说的话,还有他们说的话,我他妈根本就不在乎了!”
  • 但首先我必须承认,他觉得我很重要,这让我很高兴。
  • 她在笔记本中写道,她很确信男人都喜欢她,她一直都很招男人喜欢。
  • 那时候家里没有钱,否则的话她也会和你一样,但她后来结婚了,她走上了另一条路,再也回不了头了,我们都受生活摆布啊……”
  • 夜晚的天空让她害怕,她看不到任何上帝的杰作,只能看到一块块玻璃碎片在一潭沥青里闪烁。
  • 但凡做过的事儿,迟早都会被人知道的。
  • 我总是落在后面,总是在等待,而她总是去主动获取她想要的东西,让她充满激情的东西,她总是竭尽所能,根本就不害怕别人的鄙视、讥笑和唾骂,也不害怕挨打。
  • 我们默默地待了一会儿,大海,还有恐怖的天空,让我觉得很茫然。萨拉托雷又开始了他拙劣的抒情,他以为是他的甜言蜜语让我委身于他,其实他的那些话我最多只能忍受两句。
  • 每天我都想:我命该如此,我要听天由命,接受现实。我出生在这个城市,说这种方言,我没有钱。我付出我所能付出的,获得我所能获得的,忍受那些该忍受的事情。
  • “你好,莱农。”“你好,见到你真高兴。”“我也很高兴。”“你在做什么?”“没做什么。”“你不回修理厂上班吗?”“已经没有位子了。”“你很能干,可以在别的地方找个工作。”“不行,假如我的病治不好,我就没办法工作。”“你得了什么病?”“害怕。”
  • 我是第一次离开那不勒斯,离开坎帕尼亚大区。我发现我害怕所有东西:我害怕坐错火车;害怕尿急但找不到厕所;担心如果天黑了,我在一个陌生的城市里会迷路,担心会被偷。
  • 那个罗马来的女生嘲笑了我的口音,有一天早上她污蔑了我,她当着很多其他女生的面,说她包里的钱没有了,让我要么马上还给她,要么她就去校长那里告发我。我明白,这种时候我不能一笑了之,我狠狠地甩给她一个耳光,然后用方言破口大骂。所有人都吓傻了,我被认为是那种好脾气的人,我的反应让她们感觉很突然。
  • 时间沉寂下来,那些年发生的重要事件就像飞机场传送带上的行李匆忙滑过,你只要把它们拿下来,写在纸上就好了。
  • 他离开了厨房,进到了卧室里。从卧室里,他忽然喊了一句:“你根本无法想象,我有多爱你!”
  • 他想了一个晚上,第二天又想了一整天,一方面他觉得自己真的离不开莉拉,一方面他又觉得恐惧,因为他想起了她那些缺乏教养、肆无忌惮的做法,她那种过于聪明的无知,还有她的思想,那些思想都很大胆,不知道她是怎么想到的。
  • 当一个男人不怎么在意我们时,我们这些姑娘家经常说他不是个男人。
  • 对她来说,富裕意味着拥有尼诺,现在尼诺走了,她感觉自己很贫穷,那种贫穷是金钱无法消除的。
  • “当然不是。”“你现在多漂亮啊,连声音也变了。”“我以前的声音很难听吗?”“你以前的声音和我们一样。”“现在呢?”“现在声音小了。”
  • 我很快明白,弗朗科出现在我的生命中,掩盖了我的真实处境,但并没有改变它,我还是无法真正融入到这个环境中。我是那种日日夜夜都在努力学习的人,那种成绩很好的学生,受到同学的欣赏和认可,但我永远都不可能达到一种真正的高水平。
  • 尤其让我高兴的是,这个可爱的家庭中,没有任何人问我,就像通常人们会问的:我从哪里来,我父亲做什么,我母亲做什么。我就是我,我是我,家庭是家庭。
  • 我想,就连我母亲也意识到:莉拉要比我强,现在我把莉拉甩在身后了,这让她觉得很自豪。但她忐忑不安,她害怕自己失去作为整个城区最幸运母亲的位置。看看她真是争强好胜!看看她有多骄傲!我能觉察到围绕着我的能量。我想,她的瘸腿让她的生活比别人更艰难,需要付出更多的努力,这让她在家里家外,都表现出一种异乎寻常的残暴。我的父亲是个什么样的人呢?一个非常软弱的小男人,他已经习惯于低三下四,他小心翼翼地伸出手去,就是为了得到一点儿小费。他无法突破任何障碍,进到这栋管理森严的楼里,但是我母亲做到了。
  • 那是漫长、痛苦的火焰,让她觉得很震撼,现在这种火焰在艾达胸中燃烧起来了,只是现在并不是萨拉托雷的妻子引起的火焰,而是她——莉拉自己。
  • 只要莉拉一说起孩子急需某个东西,第二天他就会想办法搞到所需要的钱。他从来都不说她应该去找斯特凡诺要钱,抚养孩子,他从来都没说她应该找一份工作。他看着她,就好像他活着的唯一的意义,就是到晚上回家时能和她一起坐在厨房里,听她说话。最后他站起身,说完“晚安”就把自己关在卧室里。
  • 我看到他们俩在一道强光之中,他们都牺牲了睡眠,我听见他们的声音,他们做图表练习,训练自己,把世界上所有多余的东西都去掉,把每天的行为都进行简化,通过两个真实的值——0和1——来表示。
  • 我看到她停在了那堆篝火前面,穿着那身衣服,看不出她女性的特征,她翻了一下《蓝色仙女》,忽然间就把它丢进了火里。